从包含特殊字符的字符串中提取子串
从下面给出的字符串中提取"year=2017"
和"taxType=RE"
的最佳方法是什么?从包含特殊字符的字符串中提取子串
href="/property/33951?year=2017&taxType=RE"
也许你可以使用这个表达式(?i)year=(\d{4}?)&taxType=(\[a-z\]+)
,可匹配两个组一个是一个或多个degits year=
后,第二个是一个或多个alphabitics后&taxType=
:
的Java演示
String str = "/property/33951?year=2017&taxType=RE"; Pattern pattern = Pattern.compile("(?i)year=(\\d+?)&taxType=([A-Z]+)"); Matcher matcher = pattern.matcher(str); if (matcher.find()) { System.out.println("Year = " + matcher.group(1)); System.out.println("taxType = " + matcher.group(2)); }
输出
Year = 2017
taxType = RE
感谢您的快速解决方案,我很感激。它的确有诀窍。 –
欢迎你@priyankasrivastava –
这个(\?|\&)([^=]+)\=([^&]+)
是我用来获取GET
的参数通常。 您需要查找组2以获取参数和组3以获取该值。
的要求,在意见
String str = "/property/33951?year=2017&taxType=RE";
Pattern pattern = Pattern.compile("(\\?|\\&)([^=]+)=([^&]+)");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(2) + " = " + matcher.group(3));
}
这应该做的伎俩。
很好的解释。请提供一个代码示例,以便成为我已编辑的“良好答案” – sircapsalot
。谢谢。 –
为Android开发:
Uri uri = Uri.parse("/property/33951?year=2017&taxType=RE");
String year = uri.getQueryParameter("year");
String taxType= uri.getQueryParameter("taxType");
什么是Uri班?标准的Java似乎没有它。你也许是指'android.net.Uri'?如果是的话,你应该提到它,因为问题没有被标记为“android”相关。 – Pshemo
没错,添加到帖子中。 –
你找下这个模式这一特定字符串或字符串的解决方案? – Arpit