从包含特殊字符的字符串中提取子串

问题描述:

从下面给出的字符串中提取"year=2017""taxType=RE"的最佳方法是什么?从包含特殊字符的字符串中提取子串

href="/property/33951?year=2017&taxType=RE" 
+0

你找下这个模式这一特定字符串或字符串的解决方案? – Arpit

也许你可以使用这个表达式(?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 
+0

感谢您的快速解决方案,我很感激。它的确有诀窍。 –

+0

欢迎你@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)); 
} 

这应该做的伎俩。

+0

很好的解释。请提供一个代码示例,以便成为我已编辑的“良好答案” – sircapsalot

+1

。谢谢。 –

为Android开发:

Uri uri = Uri.parse("/property/33951?year=2017&taxType=RE"); 
    String year = uri.getQueryParameter("year"); 
    String taxType= uri.getQueryParameter("taxType"); 
+0

什么是Uri班?标准的Java似乎没有它。你也许是指'android.net.Uri'?如果是的话,你应该提到它,因为问题没有被标记为“android”相关。 – Pshemo

+0

没错,添加到帖子中。 –