我在拆分字符串时遇到困难而不删除空格但删除所有其他非字符。我有这个学校的任务,用BufferedReader
读入,文本由许多甚至是日食无法显示的角色组成。我读入的元素是element1的形式;元素2;元素3(元素4;元素5 $元素6等..以及要删除的一个分隔符应为“;”。
我已经尝试了.split(//W)
但这删除了所有的空格,但是一些元素保持完全为空,尽管它很好地删除了字符。
现在我已经使用了.split("[;(),$]")
,但由于仍然无法识别的字符,因此无法正常工作。
答案 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