Java 如何获取字符串中括号内的值?

Java 如何获取字符串中括号内的值?,java,android,Java,Android,如何获取字符串中括号内的值 String str= "United Arab Emirates Dirham (AED)"; 我只需要AED文本。您可以尝试: String str = "United Arab Emirates Dirham (AED)"; int firstBracket = str.indexOf('('); String contentOfBrackets = str.substring(firstBracket + 1, str.indexOf('

如何获取字符串中括号内的值

String str= "United Arab Emirates Dirham (AED)";
我只需要AED文本。

您可以尝试:

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

是的,你可以尝试不同的技巧,比如使用

 string.indexOf("("); 
获取索引 以及用途

string.substring(from, to)

使用正则表达式:

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

String str = "United Arab Emirates Dirham (AED)";
String answer = str.substring(str.indexOf("(")+1,str.indexOf(")"));
编辑并打印“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));    
     }
  }
}
regex是指:

  • \\(
    :字符
  • :开始匹配组
  • [
    :以下字符之一
  • ^
    :不是以下字符
  • :对于前面的
    ^
    ,这意味着“除了
    )之外的每个字符”
  • +
    :来自
    []
    集合的多个内容之一
  • :停止匹配组
  • \\)
    :文字结束语

    • 我可以建议两种方法:

      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;
              }
          }
      }
      

      我不知道如何在括号内拆分。非常感谢您的帮助

      当你分割时,你使用的是reg ex,因此一些字符是被禁止的

      我想你要找的是

      str = str.split("[\\(\\)]")[1];
      
      这将通过括号拆分。它转换为按
      拆分。您可以使用双精度
      \\
      来转义这些字符,它们是正则表达式的保留字符


      如果你想用一个
      拆分,你就必须使用
      拆分(\\”
      )来逃避这个点。

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

      String result = StringUtils.substringBetween(str, "(", ")");
      
      在您的示例中,
      result
      将作为“AED”返回。我建议使用StringUtils库进行各种(相对简单的)字符串操作;它可以自动处理空输入之类的事情,这非常方便

      substringBetween()的文档:


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

      来自@Cœur的答案可能是正确的,但不幸的是,它对我不起作用。 我有类似的文本:

      mrewrwegsg {text in between braces} njanfjaenfjie a {text in between braces}
      
      <>这是比较大的,但是我们只考虑这一小部分。

      我使用此代码获取手镯之间的每个文本,并将其打印到控制台:

      Pattern p = Pattern.compile("\\{.*?\\}");
      Matcher m = p.matcher(test);
      while(m.find()) {
            System.out.println(m.group().subSequence(1, m.group().length()-1));
      }
      

      它可能比@Cœur answer更复杂,但可能有像我这样的人,他们会发现我的答案很有用。

      下面的方法可以拆分任何括号内的任何字符串,如“(.{,,),},]”


      它将返回“这是您的字符串”

      我不知道如何在括号内拆分。您能帮忙吗appreciated@Muraliganesan请看一些关于处理字符串的java教程。您所要求的功能非常基本,很可能在一些java教程中进行了解释。虽然子字符串解决方案适用于这种特殊情况,但您应该真正使用Re正则表达式。
      \(
      -这是非法的转义序列,
      \\(
      应该使用。但是括号内只需要大写字母。现在我的答案永远不会被选中xD,我仍然最喜欢它…不需要太多类,而且更干净…@Daren:但是如果字符串很大,并且你有很多偏执,那么它会很慢。我在这里使用的方法只会在需要匹配之前搜索它。但是SO是非常随机的,你只需要写很多答案,其中一些会被挑选出来。很好。但是如果占位符类似于“或%”?比如String str=“阿联酋迪拉姆%AED%”;没有正则表达式,我们如何实现同样的效果?这个答案也会匹配
      )AED(
      )AED)
      ,和
      (AED>)(
      。表达式中的
      [
      ]
      是什么?比公认答案中的意大利面代码可读性强得多。
      public String getStringInsideChars(String original, char c){
          this.original=original;
          original = cleaning(original);
          for(int i = 0; i < original.length(); i++){
              if(original.charAt(i) == c){
                  String temp = original.substring(i + 1, original.length());
                  i = original.length();//end for
                  for(int k = temp.length() - 1; k >= 0; k--){
                      if(temp.charAt(k) == getReverseBracket(c)){
                          original = temp.substring(0, k);
                          k = -1; // end for
                      }
                  }
              }
          }
          return original;
      }
      
      private char getReverseBracket(char c){
          return c == '(' ? ')' :
                 c == '{' ? '}' :
                 c == '[' ? ']' :
                 c == ')' ? '(' :
                 c == '}' ? '{' :
                 c == ']' ? '[' : c;
      }
      
      public String cleaning(String original) {
          this.original = original;
          return original.replaceAll(String.valueOf('\t'), "").replaceAll(System.getProperty("line.separator"), "");
      }
      
      getStringInsideChars("{here is your string}", '{')