作为Java新手,我正在努力String.split
。尝试标记以下字符串
"(3,3,{S,W,P},{P,W,P},{P,P,P}),(1,2,{S,E}),(2,1,{{S},{E}})"
使用String.split的正则表达式模式
"\\{|\\(|\\}|\\)|\\s|,"
。不幸的是,它还会在发生匹配的地方返回空字符串,类似于
StringSplitOptions.RemoveEmptyEntries
在C#中我想抑制它。相反,使用
StringTokenizer
效果很好,但是不建议使用,我正尝试避免使用它。为了使我的问题更清楚,我尝试使用String.split
进行等效操作,就像使用以下Tokenizer一样new StringTokenizer(input2, "{},() \t")
请提出建议,我应该如何进行。
最佳答案
首先,您可以使用字符类而不是交替字符来消除大多数反斜杠。然后,如Christopher所说,您可以添加+
来模仿StringTokenizer匹配一个或多个定界符的行为:
"[{},()\\s]+"
不幸的是,当字符串以分隔符开头时,无法阻止第一个空令牌。尾随的空令牌会自动删除,但是您必须自己过滤掉前导令牌。
当然,您可以自由使用StringTokenizer,也可以使用第三方工具(例如Guava的Splitter)。
关于c# - Java等效于C#StringSplitOptions.RemoveEmptyEntries和Java StringTokenizer(input2,“{},()\t”),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10466630/