簡體   English   中英

無法替換字符串java中的空格

[英]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 方法。 在這里可以找到更多信息:

為什么不間斷空格不是java中的空白字符?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM