作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有以下字符串:
Hello word!!!
或
Hello world:)
现在我想将这个字符串拆分为一个字符串数组,其中包含 Hello,world,!,!,!或者你好,世界,:)
问题是如果所有部分之间都有空间我可以使用 split("")但在这儿 !!!或 :) 附加到字符串
我也用过这段代码:
String Text = "But I know. For example, the word \"can\'t\" should";
String[] Res = Text.split("[\\p{Punct}\\s]+");
System.out.println(Res.length);
for (String s:Res){
System.out.println(s);
}
这是我从这里找到的,但对我的情况没有太大帮助: Splitting strings through regular expressions by punctuation and whitespace etc in java
有人能帮忙吗?
最佳答案
在我看来,您不想 split ,而是想捕获某些群体。 split string 的问题是它去掉了你分割的部分(所以如果你用空格分割,你的输出数组中没有空格),因此如果你用“!”分割你不会在你的输出中得到它们。这可能适用于捕获您感兴趣的事物:
(\w+)|(!)|(:\))/g
regex101
请注意,您不要使用字符串拆分,而是使用您使用的任何引擎/语言对您的字符串执行您的正则表达式。在 Java 中它会是这样的:
String input = "Hello world!!!:)";
Pattern p = Pattern.compile("(\w+)|(!)|(:\))");
Matcher m = p.matcher(input);
List<String> matches = new ArrayList<String>();
while (m.find()) {
matches.add(m.group());
}
您的匹配数组将包含:
["Hello", "world", "!", "!", "!", ":)"]
关于java - 按标点符号和特殊情况(如 :) or space)拆分文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32356412/
我是一名优秀的程序员,十分优秀!