JAVA SPLIT - 拆分而不删除空格

时间:2014-05-03 12:20:29

标签: java split

我在拆分字符串时遇到困难而不删除空格但删除所有其他非字符。我有这个学校的任务,用BufferedReader读入,文本由许多甚至是日食无法显示的角色组成。我读入的元素是element1的形式;元素2;元素3(元素4;元素5 $元素6等..以及要删除的一个分隔符应为“;”。

我已经尝试了.split(//W)但这删除了所有的空格,但是一些元素保持完全为空,尽管它很好地删除了字符。

现在我已经使用了.split("[;(),$]"),但由于仍然无法识别的字符,因此无法正常工作。

2 个答案:

答案 0 :(得分:1)

您可以包含所需的所有字符,而不是尝试拆分您不想要的所有字符。 e.g。

String[] words = s.split("[^ a-zA-Z0-9]+");

注意:^表示除了这些字符之外的任何内容。

BTW:没有一个字符是非字符。

答案 1 :(得分:0)

如果您声称\\W对您有用,但只有问题是它也会在空格上分割,那么您可以使用\\W\\S的交集来删除\\W的所有空格{1}}。

使用split("[\\W&&\\S]+")

同样要移除_eleement 3_代表空格)等结果周围的空格,您可以使用\\s*包围正则表达式。要在预定义的字符类中添加对Unicode的支持,只需将(?U)标志添加到正则表达式。

演示:

String data = "element1;element 2; element 3 (Element 4; Element 5 $Element 6 ";
for (String s:data.split("(?U)\\s*[\\W&&\\S]+\\s*")){
    System.out.println(s);
}

输出:

element1
element 2
element 3
Element 4
Element 5
Element 6