Java 或 Eclipse 'fails' 上的空格 (?)

Java or Eclipse 'fails' on Whitespaces(?)

在其他用户问了很多问题之后,这是我第一个无法找到合适答案的问题。

然而,这个问题听起来很奇怪,实际上是: 我遇到过不止一种情况,其中空格是问题的一部分,在 Whosebug 或其他地方找到的常见解决方案对我没有帮助。

首先我想用空格分割一个字符串。应该是这样的

String[] str = input.split(" ")

但是 (" ")("\s+") 之类的任何正则表达式都不适合我。根本不是问题。我只是选择了一个不同的角色来分裂。 :)

现在我正尝试通过删除所有空格来清理字符串。常见的解决方案是

String str = input.replaceAll(" ", "")

我尝试再次使用正则表达式并 (" *", "") 以防止字符串不包含空格时出现异常。同样,none 这些对我有用。

现在我问自己这是否是我的 Java/Eclipse 平台上的一个有点奇怪的问题,或者我是否做错了什么。从技术上讲,我不这么认为,因为上面的所有代码都可以与 split/clean 上的任何其他字符一起正常工作。

希望让自己明白。

问候德雷宾

编辑以使其更清楚:
我现在只关心 "replacing"。
我的代码确实接受由逗号分隔的值和名称的组合以及由分号分隔的一系列这些,例如:

1,abc;2,def;3,ghi

这被分成两次,首先是逗号,然后是分号。工作正常。

现在我想通过删除所有空格来清除此类输入,然后按照上述说明继续操作。因此,如前所述,我使用 String.replaceAll(" ", ""),但它不起作用。相反,字符串中第一个空格之后的所有内容,无论它在哪里,都会被删除并丢失。例如。上面的字符串将更改为

1,abc;

如果第一个分号后有空格。

希望这部分代码对您有用:

import java.util.*;

public class Main {

  public static void main(String[] args) {

    // some info output

    Scanner scan = new Scanner(System.in);
    String input;

    System.out.println("\n wait for input ...");
    input = scan.next();

    if(input.equals("info"))
    {
        // special case for information
    }
    else if(input.equals("end"))
    {
        scan.close();
        System.exit(0);
    }
    else
    {   
        // here is the problem:
        String input2 = input.replaceAll(" ", "");

        System.out.println("DEBUG: "+input2);

        // further code for cleared Strings
    }
  } 
}

现在真的不知道怎么说得更清楚了...

Scanner returns 的 next 方法下一个 token - 默认分隔符是单个单词,而不是完整的行。

如果要获取完整行,请使用nextLine方法。