2012-09-03 39 views
0

我在为Android编写网络应用程序。根据协议规范,每行的结尾必须是CR/LF组合。虽然我用自己的字符串生成这个没有问题,但有时我必须处理用户输入并转换行结束。高效地更改字符串中的EOL字符

只要它通过电线作为CR/LF发送,无论我将EOL存储为内部地址,如果最简单的方法是在它进入网络时进行更改,那没问题。

什么是简单而有效的方式来确保我的所有网络输出都以CR/LF结尾,而不管我的字符串在内存中是什么?

+0

什么是这里的问题? – RNJ

+0

编辑说明问题 - 确保我的输出具有特定EOL字符的有效方法是什么? –

回答

2

什么是确保我的输出具有特定EOL字符的有效方法?

通常情况下,当你阅读的文本行,它不包括你想要的,而不是使用像println

原来的EOL字符

当你写的线条,写了EOL字符(S)

如果你有内存中的字符串包含未知的EOL字符,你可以使用

s = s.replaceAll("(\r\n|\r|\n)", "\r\n"); 
+0

对于像我这样的人,不知道交替(|)是否保证被排序的情况 - 它是:[“Pattern引擎执行传统的基于NFA的匹配,有序交替,就像在Perl 5中发生的一样。”](http ://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html) –

+0

根据应用程序的不同,您可能还想添加反向命令'\ n \ r'来覆盖_all_案例。但一定要把它放在开始而不是结束,例如'.replaceAll(“(\ n \ r | \ r \ n | \ r | \ n)”,“\ r \ n”)' –

+0

@ChadNB你知道哪个平台颠倒了'\ n \ r'吗? –