Best way to count character spaces.

Taylor Hillegeist via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Jun 30 11:33:32 PDT 2015


So I am aware that Unicode is not simple... I have been working 
on a boxes like project http://boxes.thomasjensen.com/

it basically puts a pretty border around stdin characters. like 
so:
  ________________________
/\                       \
\_|Different all twisty a|
   |of in maze are you,   |
   |passages little.      |
   |   ___________________|_
    \_/_____________________/

but I find that I need to know a bit more than the length of the 
string because of encoding differences

I had a thought at one point to do this:

MyString.splitlines.map!(a => a.toUTF32.length).reduce!max();

Should get me the longest line.

but this has a problem too because control characters might not 
take up space (backspace?).

https://en.wikipedia.org/wiki/Unicode_control_characters

leaving an unwanted nasty space :( or take weird amount of space 
\t. And perhaps the first isn't really something to worry about.

Or should i do something like:

MyString.splitLines
		.map!(a => a
			  .map!(a => a
					.isGraphical)
			  .map!(a => cast(int) a?1:0)
			  .array
			  .reduce!((a,b) => a+b))
		.reduce!max

Mostly I am just curious of best practice in this situation.

Both of the above fail with the input:
"hello \n People \nP\u0008ofEARTH"
on my command prompt at least.




More information about the Digitalmars-d-learn mailing list