我怎样才能得到一个string中的圆括号值

我怎样才能得到一个string中的圆括号值。

String str= "United Arab Emirates Dirham (AED)"; 

我只需要AED文本。 谢谢

Solutions Collecting From Web of "我怎样才能得到一个string中的圆括号值"

编译并打印“AED”。 即使作品为多个括号:

 import java.util.regex.*; public class Main { public static void main (String[] args) { String example = "United Arab Emirates Dirham (AED)"; Matcher m = Pattern.compile("\\(([^)]+)\\)").matcher(example); while(m.find()) { System.out.println(m.group(1)); } } } 

正则表示:

  • \\( :字符(
  • ( :开始比赛组
  • [ :其中一个字符
  • ^ :不是以下字符
  • ) :与前面的^ ,这意味着“除了每个字符)
  • +[]集合中的更多东西之一
  • ) :停止比赛组
  • \\) :直接closurespalenthesis

我不知道如何分割括号内。 你会非常感激的帮助吗?

当你分裂你使用一个reg-ex,因此有些字符是禁止的。

我想你在找什么

 str = str.split("[\\(\\)]")[1]; 

这会被括号分割。 它翻译成()分裂。 你使用双\\来逃避paranthese这是一个正则expression式的保留字符。

如果你想分裂一个. 你将不得不使用split("\\.")来转义点。

这工作…

 String str = "United Arab Emirates Dirham (AED)"; String answer = str.substring(str.indexOf("(")+1,str.indexOf(")")); 

我可以build议两种方式:

 import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args){ System.out.println(getParenthesesContent1("United Arab Emirates Dirham (AED)")); System.out.println(getParenthesesContent2("United Arab Emirates Dirham (AED)")); } public static String getParenthesesContent1(String str){ return str.substring(str.indexOf('(')+1,str.indexOf(')')); } public static String getParenthesesContent2(String str){ final Pattern pattern = Pattern.compile("^.*\\((.*)\\).*$"); final Matcher matcher = pattern.matcher(str); if (matcher.matches()){ return matcher.group(1); } else { return null; } } } 

你可以尝试:

 String str = "United Arab Emirates Dirham (AED)"; int firstBracket = str.indexOf('('); String contentOfBrackets = str.substring(firstBracket + 1, str.indexOf(')', firstBracket)); 

我知道这是在4年前问过的,但是对于任何有相同/类似问题的人来说(像我一样),比使用正则expression式更简单:

 String result = StringUtils.substringBetween(str, "(", ")"); 

在你的例子中, result将返回为“AED”。 我会推荐用于各种(相对简单的)string操作的StringUtils库; 它自动处理空input,这可以方便。

substringBetween()的文档: https : //commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#substringBetween-java.lang.String-java.lang.String- java.lang.String-

此函数还有另外两个版本,具体取决于开始和结束分隔符是否相同,以及是否在目标string中多次出现分隔符。

是的,你可以尝试使用不同的技术

  string.indexOf("("); 

得到索引和使用

 string.substring(from, to) 

使用正则expression式:

 String text = "United Arab Emirates Dirham (AED)"; Pattern pattern = Pattern.compile(".* \\(([AZ]+)\\)"); Matcher matcher = pattern.matcher(text); if (matcher.matches()) { System.out.println("found: " + matcher.group(1)); }