[英]unable to replace blank space in String java
這有點奇怪,因為我已經多次檢查過它,但仍然看不出我在做什么有什么問題。
無論如何,我有一個名為 score 的字符串,它是一個方法參數。 輸入是"0 - 2"
,我想解析這個字符串,但在我必須刪除空格之前。 我試過使用score = score.replaceAll("\\\\s+", "")
和score = score.replace(" ", "")
但是空格仍然沒有被替換。 在這行代碼下面,我打印出分數,它仍然將字符串顯示為"0 - 2"
,但沒有刪除空格。 任何幫助將非常感激。
這是該方法的代碼
public static int parseScore(String score, boolean first){
score = score.replaceAll("\\s+",""); // remove white space
System.out.println(score);
String[] tokens = score.split("-");
if(first == true){
return Integer.parseInt(tokens[0]);
}else{
return Integer.parseInt(tokens[1]);
}
}
錯誤:
線程“main”中的異常 java.lang.NumberFormatException:對於輸入字符串:“0” at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer。 parseInt(Unknown Source) at PredictResult2.parseScore(PredictResult2.java:32) at PredictResult2.main(PredictResult2.java:102)
編輯:
忘了提到我正在使用的字符串已經從下載的 html 頁面中解析出來了。 會不會跟這有關系? 也許不同的字符格式或什么?
你的代碼非常好。 當我測試它時它工作得很好,所以不是這樣。 這一定是其他一些奇怪的問題。
但無論如何,對於您想要實現的目標, trim()
可能會更高效、更快。
public static int parseScore(String score, boolean first){
String[] tokens = score.split("-");
if(first == true){
return Integer.parseInt(tokens[0].trim());
}else{
return Integer.parseInt(tokens[1].trim());
}
}
似乎是處理不間斷空格的情況。 不久前偶然發現了這些,並為自己編寫了以下 util 方法。 在這里可以找到更多信息:
https://en.wikipedia.org/wiki/Non-breaking_space
/**
* Trims non-breaking whitespace, too.
*/
public static String trim(String value) {
return value.replaceAll("[\\s\\u00A0]+$", "");
}
你的輸入肯定是錯誤的。 您的代碼運行良好 - 檢查這段代碼:
public static void parseScore(){
String score = "0 - 2";
score = score.replaceAll("\\s+","");
System.out.println(score);
String[] tokens = score.split("-");
System.out.println(tokens[0]);
System.out.println(tokens[1]);
System.out.println(Integer.parseInt(tokens[0]));
System.out.println(Integer.parseInt(tokens[1]));
}
public static void main(String[] args) {
parseScore();
}
如果您不確定輸入,我建議將字符串轉換為字符數組並打印每個字符的 ASCII 代碼。 然后將輸出與此處的表格進行比較。
char[] array = score.toCharArray();
for (char c : array)
System.out.print((int)c + " ");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.