我正在寻找解析字符串并返回特定人的适合数字。例如,我可以输入 Paul
,我的方法应该返回 34
。
目前,我正在通过使用 String
的 substring
方法来完成此操作(我的字符串将始终采用相同的格式):
String s = "{name : John, id : '0', fit : '34' }, {name : Paul, id : '0', fit : '34' },{name : Will, id : '0', fit : '24' } ";
String mainGrouping = s.substring(s.indexOf("Paul"));
System.out.println("Main Grouping: "+ mainGrouping);
String subGrouping = mainGrouping.substring(0, mainGrouping.indexOf('}'));
System.out.println("Sub grouping: " + subGrouping);
String fitGrouping= subGrouping.substring(subGrouping.indexOf("fit"));
String finalAnswer = fitGrouping.replaceAll("[^0-9]", "");
System.out.println("final substring: " + finalAnswer);
我相信有一个更简单、更简洁的解决方案,只使用一个正则表达式。但是,我对这个话题基本上不熟悉。我的假设正确吗?如果可以,您能否解释一下您的正则表达式解决方案?
最佳答案
\{name : John, [^\}]*?fit : '(\d+)'.*?\}
如果应用于您的示例字符串,此正则表达式模式将匹配第一组中的 fit 值。
以防万一您想使用此方法解析 JSON 字符串:它不会那样工作。首先,您不能依赖 JSON 中属性的顺序。
如果您真的想解析 JSON,请使用其他人提到的库。 如果您的示例字符串是合法的,并且您只需要为练习执行此操作,则正则表达式模式(或稍作修改的版本)应该足够了。
关于java - 在 java 中使用正则表达式的更简洁的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27491239/