Page 1 of 1

How to not use "\r" in last "writeline".

Posted: Fri Aug 19, 2016 5:35 am
by arothenberger
Hello,
I'm writing a line to a text document and I am using "\r" to make each entry on a new line. However, I don't want to use "\r" on the last entry because I need to write another line without skipping a line. Hopefully this makes sense without posting the whole code.

The text document that I end up with looks like this...
1.Hello my name is Bob.
2.Hello my name is Sam.
3.Hello my name is Jim.
4.
5.There are three total names.

I need it to look like this...
1.Hello my name is Bob.
2.Hello my name is Sam.
3.Hello my name is Jim.
4.There are three total names.

I need to ignore the last "\r" but I will never know how many entries I am writing to the document.

Thanks,
Adam

Re: How to not use "\r" in last "writeline".

Posted: Fri Aug 19, 2016 9:53 am
by freddyp
It depends on how you are constructing the line that goes into the file. I assume you are in a loop. You could make an exception for the last iteration by checking the loop variable against the length of the array your are looping over. Or after the loop you could remove the last character before appending the final line: make a substring from 0 to the length of the string minus 2 or replace the last character by finding the last character with a regular expression and replacing it by an empty string. I am sure there are other approaches.

Re: How to not use "\r" in last "writeline".

Posted: Fri Aug 19, 2016 10:19 am
by bens
If the length of the loop can be calculated:

Code: Select all

for ( var i = 0; i != length-1; ++i ) // length - 1 to skip the last line
{
  text += line[i];
  text += '\r';
}
// now handle the last line, without \r:
text += line[length-1];
If the length can't be calculated, you could instead have the first line be an exceptional case, and write the \r as part of the next line:

Code: Select all

text += firstLine();
var currentLine = getNextLine();
while ( currentLine != "" )
{
  text += '\r';
  text += currentLine;
  currentLine = getNextLine();
}
BTW you may want to consider using \n instead of \r. \r is the old Mac way, new Mac files use \n and Windows uses \r\n but handles \n correctly in most cases.

Re: How to not use "\r" in last "writeline".

Posted: Mon Aug 22, 2016 5:08 pm
by arothenberger
It's slightly silly... I was generating two variables to write to a line in a text document. The first line named "text" also contains the "\n" for a new line. Causing that last line to give a new blank line. So my "text2" line always skipped a line.

I fixed it by changing the write line from two lines of writeline(text) and writeline(text2) to writeline(text + text2).

Adam