gpt4 book ai didi

java - 根据设置更改字符串中的 EOL

转载 作者:行者123 更新时间:2023-12-02 07:16:06 25 4
gpt4 key购买 nike

我正在尝试根据设置更改字符串的行结尾。基本上我有字符串,大多以 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");}

我有点担心这段代码可能很脆弱,或者我错过了正则表达式中的某些内容,所以我想知道是否有一种 native 方法可以做到这一点,它是 Java 6,我们正在使用 Apache StringUtils 如果这可能有帮助的话。

感谢您的任何意见!

最佳答案

看起来它会起作用,但正如 EJP 提到的,你不需要这样做,它可以简化如下:

if(this.eolCharacter.equalsIgnoreCase("CR")){
return input.replaceAll("(\\r)?\\n", "\r");
}else if(this.eolCharacter.equalsIgnoreCase("LF")){
return input.replaceAll("\\r(\\n)?", "\n");
}else{
return input.replaceAll("((\\r)?\\n)|(\\r(?!\\n))", "\r\n");
}

关于java - 根据设置更改字符串中的 EOL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14932772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com