49

文字列の括弧内の値を取得するにはどうすればよいですか?

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

AED テキストのみが必要です。

4

10 に答える 10

100

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

正規表現は次のことを意味します。

  • \\(: キャラクター(
  • (: マッチグループの開始
  • [: これらの文字のいずれか
  • ^: 次の文字ではありません
  • ): 前^の では、これは「" を除くすべての文字」を意味します)
  • +:[]セットから 1 つ以上のもの
  • ): マッチグループを停止
  • \\): 文字通りの右括弧
于 2013-01-29T13:40:05.437 に答える
25

かっこ内で分割する方法がわかりません。高く評価されるのを手伝っていただけませんか

分割するときは正規表現を使用しているため、一部の文字は禁止されています。

あなたが探しているのは

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

これは括弧で分割されます。(またはで分割され)ます。double\\を使用して、正規表現用に予約されている文字である括弧をエスケープします。

で分割したい場合は、ドットをエスケープするためにも.使用する必要があります。split("\\.")

于 2013-01-29T13:42:10.050 に答える
23

これは機能します...

String str = "United Arab Emirates Dirham (AED)";
String answer = str.substring(str.indexOf("(")+1,str.indexOf(")"));
于 2013-01-29T13:36:04.727 に答える
4

あなたは試すことができます:

String str = "United Arab Emirates Dirham (AED)";
int firstBracket = str.indexOf('(');
String contentOfBrackets = str.substring(firstBracket + 1, str.indexOf(')', firstBracket));
于 2013-01-29T13:28:45.090 に答える
2

2 つの方法を提案できます。

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;
        }
    }
}
于 2013-01-29T13:40:49.117 に答える
0

はい、次のようなさまざまな手法を試すことができます

 string.indexOf("("); 

インデックスと使用法を取得する

string.substring(from, to)
于 2013-01-29T13:30:54.220 に答える
0

正規表現の使用:

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));
}
于 2013-01-29T13:32:00.993 に答える
0

@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の回答よりも複雑かもしれませんが、私の回答が役立つと思う私のような人がいるかもしれません。

于 2019-05-28T10:44:10.503 に答える
0

以下のメソッドは、'(. {. [, ), }, ]' のようなブラケット内の任意の文字列を分割できます。

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}", '{')

「ここにあなたの文字列があります」を返します

于 2020-11-22T23:24:46.290 に答える