如何在字符串中输入括号内的值

Mur*_*san 40 java android

如何在字符串中输入括号内的值.

String str= "United Arab Emirates Dirham (AED)";
Run Code Online (Sandbox Code Playgroud)

我只需要AED文本.谢谢

Jan*_*sen 89

编译并打印"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));    
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

正则表达式意味着:

  • \\(:性格 (
  • (:开始比赛组
  • [:其中一个角色
  • ^:不是以下字符
  • ):与前一个^,这意味着"每个字符除外)"
  • +:[]集合中的一个或多个东西
  • ):停止匹配组
  • \\):字面意义关闭


Dar*_*ren 23

我无法理解如何在括号内分开.你会高度赞赏吗?

当你分裂时你使用的是reg-ex,因此禁止使用某些字符.

我认为你在寻找的是

str = str.split("[\\(\\)]")[1];
Run Code Online (Sandbox Code Playgroud)

这将通过括号分开.它转化为由(或分裂).你使用double \\来转义paranthese,这是正则表达式的保留字符.

如果你想用a分割,.你也必须使用它split("\\.")来逃避点.

  • 这个答案还将匹配`)AED(`,`)AED)`和`(AED(`。 (2认同)

xag*_*gyg 13

这有效......

String str = "United Arab Emirates Dirham (AED)";
String answer = str.substring(str.indexOf("(")+1,str.indexOf(")"));
Run Code Online (Sandbox Code Playgroud)


Yur*_*ury 6

我知道这是4年前问过的,但是对于任何一个有相同/相似问题的人(就像我一样),有比使用正则表达式更简单的方法:

String result = StringUtils.substringBetween(str, "(", ")");
Run Code Online (Sandbox Code Playgroud)

在您的示例中,result将返回为“ AED”。我建议将StringUtils库用于各种(相对简单的)字符串操作。它会自动处理诸如空输入之类的事情,这很方便。

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-

此函数还有其他两个版本,具体取决于开始和结束定界符是否相同,以及定界符是否在目标字符串中多次出现。