2012-03-12 8 views
1

Java異なるC#Split Functionですか?文字列をデリミタで分割しようとしたときにこのエラーが発生するのはなぜですか? (String Splitからチュートリアル)Split関数の戻り<比類のない決算...>エラー

private String GetAccountID(String xStr) 
{ 
    String oText = xStr; 
    String[] oValA = oText.split(")"); 
    String[] oValB = oValA[0].split("("); 

    return oValB[1]; 
} 

サンプル値:

AccountID sample values: 
     (100) Department 
     (100A) Budget 
     (12-34F) Others 

I want to get 100, 100A, 12-34F from the AccountID. 

使用例:

Exception in thread "AWT-EventQueue-0" java.util.regex.PatternSyntaxException: Unmatched closing ')' 
) 
    at java.util.regex.Pattern.error(Pattern.java:1924) 
    at java.util.regex.Pattern.compile(Pattern.java:1669) 
    at java.util.regex.Pattern.<init>(Pattern.java:1337) 
    at java.util.regex.Pattern.compile(Pattern.java:1022) 
    at java.lang.String.split(String.java:2361) 
    at java.lang.String.split(String.java:2403) 
... <more stacktrace> 

このコード使用

String AccID = GetAccountID(AccountID); 

をそれとも、別の解決策のために持っていますこの?

答えて

1

普通は、regex replace/findで行います。

private String getAccountID(String str) 
{ 
    //^start, .* any chars, \\(open parenthesis, ([^)]*) no end parenthesis = $1, 
    // \\) end parenthesis, .* $ any chars upto end. 

    String accountID = str.replaceFirst("^.*\\(([^)]*)\\).*$", "$1"); 

    // If no matching, accountID == str. 
    return accountID == str ? "" : accountID; 
} 
3

Javaから別のC#のSplit関数ですか?

はい

Split()のC#バージョンは、ターゲットを分割する単一の文字列トークンを受け入れます。string

Javaバージョンは正規表現を受け入れます。 (は有効な正規表現ではないため、split()への呼び出しは失敗します。

は、あなたが望む機能を取得するには、そのよう(文字をエスケープすることができます

String[] oValA = oText.split("\\("); 

注ダブルスラッシュを、\は、Javaの正規表現のエスケープ文字の両方であるという事実を考慮して。

+0

は、情報サーいただきありがとうございます。あなたは私のためにこれを表現するのを助けることができますか? –

関連する問題