在Java中解析具有多个分隔符的字符串
我试图将字符串加载到数组中,删除所有空格和标点符号。问题是,如果一行中有两个分隔符,它会在数组中留下一个空白 我所拥有的:在Java中解析具有多个分隔符的字符串,java,arrays,string,delimiter,Java,Arrays,String,Delimiter,我试图将字符串加载到数组中,删除所有空格和标点符号。问题是,如果一行中有两个分隔符,它会在数组中留下一个空白 我所拥有的: String[] temparray =inputstr.split("\\s+|,|;|\\(|\\)|, "); 例如: inputstr = "I bought bread, eggs, and milk" 其输出为: I bought bread eggs and milk 有人知道如何防止逗号后的空格被加载到数组中吗?您可以使用a对所有分隔符进行分组 S
String[] temparray =inputstr.split("\\s+|,|;|\\(|\\)|, ");
例如:
inputstr = "I bought bread, eggs, and milk"
其输出为:
I
bought
bread
eggs
and
milk
有人知道如何防止逗号后的空格被加载到数组中吗?您可以使用a对所有分隔符进行分组
String[] temparray = inputstr.split("[\\s,;()]+");
通过使用
?
元字符表示“可选”,可以将“逗号”和“逗号后跟空格”这两种情况组合起来
我已将,
替换为,?
(逗号空格问号)。这样,空格将作为分隔符的一部分进行匹配
// space here ---v
String[] temparray = inputstr.split("\\s+|, ?|;|\\(|\\));
打印阵列的每个元素:
I
bought
bread
eggs
and
milk
请您解释一下。@mok The
[]
创建了一个字符类,由空格字符、逗号、分号和左右括号组成。将该类传递给split()
方法将导致该类在这些字符中的任何一个上拆分。字符类后面的+
表示1个或多个
,因此split()
将在一个或多个字符上拆分。它将拆分为一个,
,或者后面跟一个空格,如,
。它还将拆分为两个连续的逗号,或,;()
,等等。@mok表示它将使用一个或多个这些字符的序列作为分隔符。这意味着如果字符串是“我买了面包、鸡蛋、;;和牛奶”
,它将返回长度为6的数组{“我”、“买了”、“面包”、“鸡蛋”、“和牛奶”}
。