String processing question - char set related

X

XXX

If I have a string with \r\n & I am trying to convert all \r\n to \n,
then is code like this good enough?


String s // contains the original string.

StringBuffer old = new StringBuffer(s);
StringBuffer new= new StringBuffer();

for (int i=0; i < old.length(); ++i)
{
if (strBuf.charAt(i) != '\r')
{
new.append(old.charAt(i));
}
}

Or are there problems with this? I am think of problems
like
- Is it possible to have strings with just \r not followed by \n.
When can this happen?

- Is it possible for some Unicode chars to have the \r\n pattern
which doesn't represent a new line?
 
C

Chris Smith

XXX said:
Or are there problems with this? I am think of problems
like
- Is it possible to have strings with just \r not followed by \n.
When can this happen?

Yes. There are platforms where \r is the standard representation of
end-of-line. If you need to handle end of line sequences across a
number of common platforms, then it would be safer to wrap a
StringReader with a BufferedReader, and then use readLine to get the
lines.

Alternatively, you may be reading from some protocol where the end of
line sequence is specified; for example, it's required to be \r\n for
many common internet application protocols. Then you could just look
for that one sequence and replace it with \n if that's what you want.
- Is it possible for some Unicode chars to have the \r\n pattern
which doesn't represent a new line?

It's safe to assume that \r\n indicates a newline whenever you find it.
 
X

XXX

Chris said:
Yes. There are platforms where \r is the standard representation of
end-of-line. If you need to handle end of line sequences across a
number of common platforms, then it would be safer to wrap a
StringReader with a BufferedReader, and then use readLine to get the
lines.

Alternatively, you may be reading from some protocol where the end of
line sequence is specified; for example, it's required to be \r\n for
many common internet application protocols. Then you could just look
for that one sequence and replace it with \n if that's what you want.

This is going to be text, I get from a AWT TextArea widget by calling
getText()

Are these issues relavant in this case?
 
D

Daniel Pitts

XXX said:
This is going to be text, I get from a AWT TextArea widget by calling
getText()

Are these issues relavant in this case?

I would bet that you don't need to worry about it in this case. A few
simple tests will let you know.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,534
Members
45,008
Latest member
Rahul737

Latest Threads

Top