gpt4 book ai didi

java - 拆分非阿拉伯字符

转载 作者:太空狗 更新时间:2023-10-29 23:01:47 25 4
gpt4 key购买 nike

我有一个这样的字符串

أصبح::ينال::أخذ::حصل (على)::أحضر

我想使用 java 在非阿拉伯字符上拆分它

这是我的代码

String s = "أصبح::ينال::أخذ::حصل (على)::أحضر";
String[] arr = s.split("^\\p{InArabic}+");
System.out.println(Arrays.toString(arr));

输出是

[, ::ينال::أخذ::حصل (على)::أحضر]

但我希望输出是

[ينال,أخذ,حصل,على,أحضر]

所以我不知道这有什么问题?

最佳答案

您需要一个否定类,为此,您需要方括号[ ... ]。尝试用这个拆分:

"[^\\p{InArabic}]+"

如果 \\p{InArabic} 匹配任何阿拉伯字符,那么 [^\\p{InArabic}] 将匹配任何非阿拉伯字符。


您可以考虑的另一个选项是等效语法,使用 P 而不是 p 来表示 \\p{InArabic} 像@Pshemo 提到的字符类:

"\\P{InArabic}+"

这就像 \\W\\w 相反。

第一种语法相对于第二种语法的唯一可能优势(再次像提到的@Pshemo)是,如果您想将其他字符添加到不应该匹配的字符列表中,例如,如果您想要匹配除句点之外的所有非 \\p{InArabic},第一个更灵活:

"[^\\p{InArabic}.]+"
^

否则,如果你真的想使用\\P{InArabic},你需要subtraction类内:

"[\\P{InArabic}&&[^.]]+"

关于java - 拆分非阿拉伯字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20856213/

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