繁体   English   中英

拆分字符串以特殊字符结尾-Java

[英]Split String end with special characters - Java

我有一个字符串,我想先按空格分开,然后将单词与特殊字符分开。

例如,假设输入为:

Hi, How are you???

我已经在此处编写了按空间分割的逻辑:

String input = "Hi, How are you???";
String[] words = input.split("\\\\s+");

现在,我想将每个单词与特殊字符分开。

例如: "Hi,"{"Hi", ","}"you???" {"you", "???"}

如果字符串不以任何特殊字符结尾,则忽略它。

您能用Java的正则表达式和代码帮助我吗?

使用正则表达式可以帮助您:

(\\s+|[^A-Za-z0-9]+)

这不是Java正则表达式,因此您需要添加一个退格键。

它在空格\\s+包含A-Za-z0-9字符串上匹配。 这是一种解决方法,因为没有(或至少我不知道)特殊字符的正则表达式。

您可以在此处测试此正则表达式。

如果将此正则表达式与split函数一起使用,它将返回单词。 不是它所处理的特殊字符和空格。

UPDATE

根据SO上的此答案 ,java具有\\P{Alpha}+ ,它匹配任何非字母字符。 因此,您可以尝试:

(\\s|\\P{Alpha})+

我想将每个单词与特殊字符分开。

例如:“嗨,”到{“嗨”,“,”}和“你?” 给你”, ”???”}

正则表达式以实现上述行为

String stringToSearch ="Hi, you???";

Pattern p1 = Pattern.compile("[a-z]{0}\\b");
String[] str = p1.split(stringToSearch);
System.out.println(Arrays.asList(str));

输出:

[你好, ???]

@mike是正确的...我们需要将句子拆分为特殊字符,而忽略单词。 这是代码:

`public static void main(String[] args) {
    String match = "Hi, How are you???";
    String[] words = match.split("\\P{Alpha}+");
    for(String word: words) {
        System.out.print(word + " ");
    }
}`

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM