gpt4 book ai didi

java - 如何将字符串解析为数组

转载 作者:行者123 更新时间:2023-12-01 18:29:43 25 4
gpt4 key购买 nike

我有一个字符串(下面的示例),我想将其解析为数组

//只是一个愚蠢的例子
String s =“玛丽·马克{约翰·布朗}蜂蜜 Lollipop 獾{哦我的上帝}{真蠢}”;

我有兴趣将该字符串分解为 String[][] 或 ArrayList,因此如果我调用:

字符串[][] x = 变换(s);

x 将包含如下内容:

String[][] x = {{"Mary"}, {"Mark"}, {"John", "Brown"}, {"Honey"}, {"lollipop"}, {"獾”},{“哦”,“我的”,“上帝”},{“这样”,“愚蠢”}};

我该怎么做?

编辑:更改为二维数组

最佳答案

您似乎正在寻找类似的东西

String s = "Mary Mark {John Brown} Honey lollipop Badger {Oh My God} {Such stupid}";

Pattern p = Pattern.compile("(?<=\\{)[^{}]+(?=\\})|\\w+");
Matcher m = p.matcher(s);
List<String[]> tokens = new ArrayList<String[]>();
while (m.find()) {
tokens.add(m.group().split("\\s+"));
}

String[][] result = tokens.toArray(new String[tokens.size()][]);

// lets see if it works as planned
System.out.println(Arrays.deepToString(result));

输出:

[[Mary], [Mark], [John, Brown], [Honey], [lollipop], [Badger], [Oh, My, God], [Such, stupid]]

说明:

"(?<=\\{)[^{}]+(?=\\})|\\w+"是搜索

的正则表达式
  • (?<=\\{)[^{}]+(?=\\})不是 { 的字符也不}且介于 { 之间和} (不包括这些括号)。 (?<=...)(?=...)属于 look-around 的一部分机制
  • \\w+一个或多个字母数字字符

在找到所有此类标记后,他们会将它们拆分为任何一种或多个空白 \\s+创建单独的字符串数组

  • "foo".split("\\s+")将成为数组 ["foo"]
  • "foo bar".split("\\s+")将成为数组 ["foo", "bar"]

接下来我使用 toArray 将此类数组的列表转换为二维列表方法。

关于java - 如何将字符串解析为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24841484/

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