gpt4 book ai didi

java - 拆分复杂的字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:14:00 24 4
gpt4 key购买 nike

我有这样一个字符串:

1|f1|</a1|a2/></a3|a4/>|f2

我想用'|'分割通过 Java但我需要忽略 <//> .我怎样才能做到这一点?这似乎是一个正则表达式方法

上面的字符串应该拆分成:

1

f1

a1|a2

a3|a4

f2

最佳答案

split方法使用正则表达式作为参数和 |在正则表达式中是特殊字符,表示或。使其成为正常字符位置\\在喜欢之前

"yourString".split("\\|");

在您的情况下,您还需要 look-ahead机制让你的正则表达式看起来像

/></|(/>)?\\|(?=[^>]*(</|$))(</)?

它将 split 于

  • /></
  • |可选 />之前或</在它之后但只有在没有>的情况下之后直到</或输入结束 $ .这将保证 |</ />之外

还可以解决 "</a|b/>|c|</d|e/>" 等情况下的问题其中 </在开始和/>在输入结束时,您需要在拆分前删除它们。

这似乎是必要的,因为我们不想像 "ab".split("a") 那样在生成的数组中生成空字符串作为第一个或最后一个元素。这将产生 {"", "b"}

让我们测试一下:

for (String s : "</a0|b0/>|1|f1|</a1|a2/></a3|a4/>|f2|</a5|a6/>"
.replaceAll("^</", "").split("/></|/>$|(/>)?\\|(?=[^>]*(</|$))(</)?")) {
System.out.println(s);
}

输出:

a0|b0
1
f1
a1|a2
a3|a4
f2
a5|a6

关于java - 拆分复杂的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15979026/

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