在字符串中给定单词后获取子字符串的最佳方法?

时间:2018-09-27 10:46:51

标签: java string parsing substring lastindexof

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

要查找并返回此值,我目前正在这样做:

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

这可行,resultTotalWinAmount正确设置为100,但是我很好奇这是否是这种情况的最佳实践,无论这实际上是糟糕的编码还是有更好的方法?

2 个答案:

答案 0 :(得分:1)

您可以使用RegExp:"\s*totalWinAmount\s*"\s*:\s*(?<totalWinAmount>\d*)

这是Demo at regex101.com

这是获取几个值的最简单方法(出于这个原因,我认为使用json转换器是开销)。但是,如果您想查找更多值,那么一定要使用json转换器(例如Jackson)。

答案 1 :(得分:0)

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

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

有点混乱,但是无需其他库即可使用。

但是,我同意Sun的看法。为了正确分析json,您应该始终使用Jackson或GSON之类的东西。