无法替换字符串java中的空格

无法替换字符串java中的空格,java,replaceall,Java,Replaceall,这有点奇怪,因为我已经检查了好几次了,仍然看不出我所做的有任何错误 无论如何,我有一个名为score的字符串,它是一个方法参数。输入是“0 - 2”< /代码>,我想解析这个字符串,但在我必须删除空白之前。我曾尝试使用得分=分数。RePATALL(“\s+”,“”“”< /> >和得分=得分。替换(“”,“”)< /> >但是空白空间仍然没有被替换。在这行代码下面,我打印出了分数,它仍然将字符串显示为“0-2”,空格没有删除。任何帮助都将不胜感激 下面是该方法的代码 public static

这有点奇怪,因为我已经检查了好几次了,仍然看不出我所做的有任何错误

无论如何,我有一个名为score的字符串,它是一个方法参数。输入是<代码>“0 - 2”< /代码>,我想解析这个字符串,但在我必须删除空白之前。我曾尝试使用<代码>得分=分数。RePATALL(“\s+”,“”“”< /> >和<代码>得分=得分。替换(“”,“”)< /> >但是空白空间仍然没有被替换。在这行代码下面,我打印出了分数,它仍然将字符串显示为
“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” 位于java.lang.NumberFormatException.forInputString(未知源) 位于java.lang.Integer.parseInt(未知源) 位于java.lang.Integer.parseInt(未知源) 在PredictResult2.parseScore(PredictResult2.java:32) 在PredictResult2.main(PredictResult2.java:102)

编辑:


忘了提到我正在使用的字符串已经从下载的html页面中解析出来了。这跟这事有关系吗?可能是不同的字符格式或其他什么?

您的输入一定是错误的。您的代码运行良好-请检查以下代码:

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码。然后将输出与表进行比较


你的代码非常好。当我测试它时,它工作得很好,所以不是这样。这一定是另一个奇怪的问题

但是无论如何,对于您想要实现的目标,
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方法。更多信息可在此处找到:


你有没有在调试器中仔细检查代码,看看每一行都发生了什么?System.out.println(score)返回“0-2”。因此,当执行行return Integer.parseInt(tokens[0])时,它返回NumberFormatException。我将在实际错误中编辑嗨,谢谢!是的,我想可能是这样。如果你看一下我刚刚在文章中所做的编辑,我相信这可能与我从网上撕下的html页面中的一些不寻常的字符格式有关。0-2是输入。或者至少这是我从println函数的输出中复制的内容。我会试试角色数组的东西,然后再给你回复,谢谢!下面是char数组的输出:481604516050。哦,好的,所以空间实际上被格式化为“á”。那么我应该试着替换那个字符吗?是的,你应该从字符串中删除这个奇怪的字母。试试这个:
    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());

    }
}
/**
 * Trims non-breaking whitespace, too.
 */
public static String trim(String value) {
    return value.replaceAll("[\\s\\u00A0]+$", "");
}