我正在尝试根据设置更改字符串的行尾。基本上我有字符串,主要是 LF 结尾,很少有其他东西,但它会发生,如果被问到,我希望能够将它们更改为 CRLF 或 CR,或者如果被问到,请确保它们是纯粹的 LF。源平台和目标平台因操作系统而异,因此我想根据自己的喜好更改行尾。
目前我正在使用这段代码
if(this.eolCharacter.equalsIgnoreCase("CR")){
//replaces all \r\n with \r
//replaces all \n that are not preceded by \r with \r
return input.replaceAll("\\r\\n", "\r").replaceAll("\\n", "\r");
}else if(this.eolCharacter.equalsIgnoreCase("LF")){
//replaces all \r\n with \n
//replaces all \r with \n
return input.replaceAll("\\r\\n", "\n").replaceAll("\\r", "\n");
}else{
//replaces all \n that are not preceded by \r
//replaces all \r that are not followed by \n
return input.replaceAll("(?<!\\r)\\n", "\r\n").replaceAll("\\r(?!\\n)", "\r\n");}
我有点担心这段代码可能很脆弱,或者我错过了正则表达式中的某些内容,所以我想知道是否有一种本地方式可以做到这一点,它是 Java 6,如果那样的话,我们正在使用 Apache StringUtils可能有帮助。
感谢您的任何意见!