Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据标点符号和空格拆分字符串?_Java_Regex - Fatal编程技术网

Java 如何根据标点符号和空格拆分字符串?

Java 如何根据标点符号和空格拆分字符串?,java,regex,Java,Regex,我有一个字符串,我想根据标点符号和空格进行拆分。split()方法的regex参数应该是什么 str.split(" ,.!?;") 这将是英语的一个良好开端。您需要根据您在数据中看到的内容和使用的语言对其进行改进。代码中加入了一些奇怪的处理:(注意,它跳过了输出循环中的空标记。这既快又脏。)您可以将需要拆分和删除的任何字符添加到正则表达式模式中。(tchrist是对的。它的实现非常糟糕,只在一些非常简单的情况下起作用。) 试着这样做: String myString = "item1, i

我有一个
字符串
,我想根据标点符号和空格进行拆分。
split()
方法的regex参数应该是什么

str.split(" ,.!?;") 

这将是英语的一个良好开端。您需要根据您在数据中看到的内容和使用的语言对其进行改进。

代码中加入了一些奇怪的处理:(注意,它跳过了输出循环中的空标记。这既快又脏。)您可以将需要拆分和删除的任何字符添加到正则表达式模式中。(tchrist是对的。它的实现非常糟糕,只在一些非常简单的情况下起作用。)


试着这样做:

String myString = "item1, item2, item3";
String[] tokens = myString.split(", ");
for (String t : tokens){
            System.out.println(t);
        }

/*output
item1
item2
item3
*/

-1由于未正确声明正则表达式,因此这不起作用。它将在“,.!?;”的字符序列上拆分字符串,而不是单个字符。您不能使用较短的pangram吗?;-)谢谢,但是这仍然是一个空白的词。您知道如何排除它吗?@omgzor:只需在要拆分的字符列表中添加一个换行符即可。请参阅上面更新的代码示例。(如果数据中除换行符外还有回车符,您可能还需要添加一个字符。)嗯,不,这不对
\pP
匹配所有标点符号,但
\s
不匹配所有空格。事实上,它忽略了其中的20个。Java的字符类快捷方式被破坏。
\s
的正确模式是“[\\u0009\\u000A-\\u000D\\u0020\\u0085\\u00A0\\u1680\\u180E\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]”。@Paul Sasik Jackdaws love我的石英大狮身人面像是我当时认为最短的一个
String myString = "item1, item2, item3";
String[] tokens = myString.split(", ");
for (String t : tokens){
            System.out.println(t);
        }

/*output
item1
item2
item3
*/