【问题标题】:Best method to get substring after a given word in a String?在字符串中给定单词之后获取子字符串的最佳方法?
【发布时间】:2019-03-03 06:21:11
【问题描述】:

我有一个长字符串,它是一个 json 文件内容。在这个字符串的某个地方,它包含以下内容:“totalWinAmount”:100

为了找到并返回这个值,我目前正在这样做:

int totalWinAmountIndex = line.lastIndexOf("totalWinAmount");
String resultTotalWinAmount = line.substring(totalWinAmountIndex + 16, totalWinAmountIndex + 19);

这行得通,resultTotalWinAmount 正确设置为 100,但我很好奇这是否是这种情况下的最佳实践,这是否真的是糟糕的编码,或者是否有更好的方法?

【问题讨论】:

  • 你可以使用正则表达式。
  • 真的取决于它的用途、使用位置等。在专业的业务环境中,我会使用 JSON 库将整个事物解析为对象表示,然后从那里获取值.在一个我在家为自己破解的小工具中,我可能会做你所做的事情。
  • 如果它总是在同一个地方,并且totalWinAmount 保持原样,那么你所做的就没有真正的问题。除了可以使用常量代替硬编码1619。但也许考虑一个合适的 JSON 解析器。

标签: java string parsing substring lastindexof


【解决方案1】:

您可以使用正则表达式:"\s*totalWinAmount\s*"\s*:\s*(?<totalWinAmount>\d*)

这是Demo at regex101.com

这是获得几个值的最简单的方法(我认为使用 json 转换器是因为这个原因是开销)。但是如果你想找到更多的值,那么肯定你必须使用json转换器(例如Jackson)。

【讨论】:

    【解决方案2】:

    您也可以尝试使用正则表达式提取值。 这样的事情应该可以工作:

    resultTotalWinAmount = str.split(".*\"totalWinAmount\"\\s*:\\s*")[1].split("\\D+")[0];
    

    这有点乱,但无需额外的库即可工作。

    但是,我同意 Sun 的观点。为了正确分析 json,您应该始终使用 Jackson 或 GS​​ON 之类的东西。

    【讨论】:

      猜你喜欢
      • 2014-10-03
      • 2023-03-06
      • 2016-02-19
      • 2018-09-30
      • 1970-01-01
      • 2017-11-23
      • 2022-08-08
      • 2010-10-12
      • 1970-01-01
      相关资源
      最近更新 更多