gpt4 book ai didi

java - 按标点符号和特殊情况(如 :) or space)拆分文本

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:07 25 4
gpt4 key购买 nike

我有以下字符串:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com