gpt4 book ai didi

java - 无法摆脱java中的多余空格

转载 作者:行者123 更新时间:2023-11-30 03:29:06 25 4
gpt4 key购买 nike

我有多余的空格,例如“- - - -”,我试图删除它们...我尝试使用正则表达式“\s+”以及编写自己的函数。

System.out.println(test.removeExtraSpaces("-   -   -  "));
System.out.println(test.removeExtraSpaces("-   -   -  "));

我的结果是

- - -
-   -   -  

第一个是我实际键入的“空格”,每个破折号之间有 3 个“空格”,第二个是来自导入文件。我认为我遇到的问题是它们不是“真实”空间或具有不同 unicode 或其他内容的空间,但我不知道如何删除它们。

我开始使用正则表达式,但这不起作用,我尝试了这个,结果是图像

public String removeExtraSpaces(String s){
s.trim();
String newString = "";

for(int i = 0; i < s.length() - 1; i++){
if(s.charAt(i) != ' '){
newString = newString + s.charAt(i);
}
else{
if(s.charAt(i + 1) != ' '){
newString = newString + s.charAt(i);
}
}
}
newString = newString + s.charAt(s.length()-1);

return newString.trim();
}

这是结果 http://i.imgur.com/WPAF8TB.png

编辑:人们一直在建议我已经尝试过的正则表达式,但这是正则表达式不起作用的证据:http://i.imgur.com/IgY2v0r.png

最佳答案

代码点160的字符是non-breaking space它不被视为空格,因此 \\s 将无法匹配它。如果您想替换任何类型的空格(包括不间断空格)和任何空白(例如制表符 \t 或换行符 \n \r) 尝试使用

replaceAll("[\\p{Zs}\\s]+"," ")

来自http://www.regular-expressions.info/unicode.html

\p{Zs} will match any kind of space character

<小时/>

演示:

char[] arr = { 45, 32, 160, 32, 45, 32, 160, 32, 45, 32, 160 };
String str = new String(arr);
System.out.println("original: \"" + str + "\"");
str = str.replaceAll("[\\p{Zs}\\s]+", " ");
System.out.println("replaced: \"" + str + "\"");

输出:

original: "-   -   -  "
replaced: "- - - "

关于java - 无法摆脱java中的多余空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29461339/

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