On Wednesday, 3 June 2020 at 18:49:38 UTC, ttk wrote:
On Wednesday, 3 June 2020 at 18:23:51 UTC, BoQsc wrote:
Here you can see ". hahahahahahaha" and "nononono" and even lineNumber is being merged into the same position. Why is this happening and can this be simply resolved?

Your string in "line" has a carriage return character at the end, which moves the cursor to the beginning of the display row.

If you remove this trailing carriage return character (0x0D) it will display correctly.

With the carriage return character in place, everything written to your terminal after the carriage return starts at the beginning of the row.

It seems to be correct.
Removing the last element of the string got it resolved.
Might not be the best way and adding additional check for carriage return before removing the element would be better, so this is only initial proof.

Command Prompt Output
C:\Users\vaida\Desktop\Associative Array Sorting> rdmd associativeArraySorting.d
0.  The quick brown fox jumps over the lazy dog
1. hahahahahahaha Sphinx of black quartz, judge my vow.nononono
2. # How vexingly quick daft zebras jump!
3. # The five boxing wizards jump quickly
4. # Maecenas consectetur risus a lacus sodales iaculis.
5. # Morbi sed tortor sollicitudin, pharetra massa egestas, congue massa.
6. # Sed sit amet nisi at ligula ultrices posuere quis nec est.
7. # Mauris vel purus viverra, pellentesque elit id, consequat felis.


testingGround.d
import std.stdio;
import std.algorithm;



int lineNumber;
void main(){

        File exampleFile = File("exampleText.txt");
        lineNumber = 0;
        foreach(line; exampleFile.byLine){
                
                if (line == " Sphinx of black quartz, judge my vow.\u000D"){
writeln(lineNumber, ". hahahahahahaha", line.remove(line.length - 1), " nononono");
                        
                } else {
                        writeln( lineNumber, ". ", line);
                }
                
                lineNumber++;
        }
}

Reply via email to