【问题标题】:Convert the string to Array and process it将字符串转换为数组并进行处理
【发布时间】:2017-03-03 17:36:04
【问题描述】:

我有一个类似下面的字符串

String detail = "UserDetail: Name=TestName1, Address=India, Name=TestName2, Address=USA";

我只想获取名称列表。即在上面的示例中,我想删除字符串 UserDetailAddress 详细信息,Name 得到一个只有 TestName1TestName2 的列表。

到目前为止,我正在将字符串转换为 list 并执行子字符串/从列表中删除值。

我想知道还有其他有效的方法吗?

【问题讨论】:

  • json 字符串吗?
  • 如果您了解正则表达式,请使用Pattern

标签: java string substring


【解决方案1】:

试试这个。

String detail = "UserDetail: Name=TestName1, Address=India, Name=TestName2, Address=USA";
List<String> result = new ArrayList<>();
Pattern pat = Pattern.compile("Name=(\\w+)");
Matcher matcher = pat.matcher(detail);
while (matcher.find())
    result.add(matcher.group(1));
System.out.println(result);

结果:

[TestName1, TestName2]

【讨论】:

  • 看起来这行得通!让我把这个问题再开放一段时间,看看我是否能得到更多的解决方案。感谢您的帮助
【解决方案2】:

应该可以用 String.split(delimiter) 来做。 第一次调用使用:作为分隔符和返回数组“Name=TestName1, Address=India, Name=TestName2, Address=USA”的第二个元素 然后将其拆分为 ,(逗号) 然后遍历该数组并在 = 上拆分每个元素并获取返回数组的第二个元素,这就是您要查找的内容

【讨论】:

  • 我正在这样做。但我正在寻找一些更有效的方法来做到这一点。
【解决方案3】:

尝试模式:

    String pattern = "Name=(\\w+)";
    Pattern r = Pattern.compile(pattern);
    Matcher m = r.matcher(detail);
    List<String> result = new ArrayList<>();
    while (m.find()) {
        result.add(m.group(1));
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2018-02-01
    • 2014-05-09
    • 1970-01-01
    • 2018-07-04
    相关资源
    最近更新 更多