从字符串中删除空格和标记

时间:2019-08-22 15:45:52

标签: java string

我输入的字符串是“他是一个非常非常好的男孩,不是吗?”

    Scanner scanner = new Scanner(System.in);
    String s = scanner.nextLine();
    String[] split = s.split("[',',''','?','\\s','(',')',',',';']");
    for(String s1:split){
        if(s1.equalsIgnoreCase(""))
        {
            s1.trim();
        }
        System.out.println(s1);

    }

预期结果:

ExpectedResult:

实际结果:

Actual Result

2 个答案:

答案 0 :(得分:1)

只需将+放在括号中即可

String[] split = s.split("[',',''','?','\\s','(',')',',',';']+");

或将其简化为:

String[] split = s.split("[,'?\\s();]+");

它将按您的预期工作,因为它现在可以连续匹配多个字符。

您也将不再需要使用trim()并只需致电:

for(String s1:split){
    System.out.println(s1);
}

答案 1 :(得分:1)

.trim()删除空格。即" "成为""。但是,无法将其从列表中删除。 String.split()不了解您的列表。

以下内容将满足您的需求:

String[] split = s.split("<your regex>");
List<String> list = Arrays.asList(split);

list.stream()  // convert to a stream for easy filtering
    .filter(s -> s.trim().equals(""))  // if s.trim().equals(""), remove it from the list/stream
    .forEach(System.out::println);  // print every remaining element