[英]Can't get rid of extra spaces in java
我有多余的空格,例如“----”,我要刪除...我嘗試使用正則表達式“ \\ 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
字符是不間斷空格 ,不會被視為空格,因此\\\\s
將無法與之匹配。 如果要替換任何類型的空格(包括不間斷空格)和任何空白(例如制表符\\t
或換行符\\n
\\r
),請嘗試
replaceAll("[\\p{Zs}\\s]+"," ")
來自http://www.regular-expressions.info/unicode.html
\\p{Zs}
將匹配任何類型的空格字符
演示 :
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: "- - - "
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.