2016-08-19 7 views
2

私のJavaアプリケーションでは、と同じ "target"を使用してインデックスと分割文字列を検索する必要があります。ターゲットは単にドットです。 (のindexOfおよびlastIndexOfでも別)正規表現なしで分割する方法

検索インデックスがそう

String target = "."; 
String someString = "123.456"; 
int index = someString.indexOf(target); // index == 3 

は私が必要とするインデックスを与え、正規表現を使用していません。

ただし、この「ターゲット」を使用して一部の文字列を分割したい場合もあります。しかし、ターゲット文字列は正規表現文字列として解釈されるようになりました。だから私は、だから私は、次のいずれかを必要とする...私は、文字列を分割したい場合は以前のように

String target = "."; 
String someString = "123.456"; 
String[] someStringSplit = someString.split(target); // someStringSplit is an empty array 

を同じ対象の文字列を使用することはできません。

  1. 配列に分割する方法を正規表現の文字列に

を非正規表現対象の文字列を「変換」する方法

  • 非正規表現のターゲットで誰かが助けることができますか?正規表現を "indexOf"に使用しないで、 "split"のために正規表現を使用するのは標準Javaプラットフォームのほんの少し違うようです。

  • +1

    分割正規表現で10進数をエスケープできないのはなぜですか? –

    +0

    indexOfでサブストリング・メソッドを使用して、前の文字列とトークンの後の文字列を抽出することができます。つまり、本当に 'split'の使用を避けたい場合です。 – AntonH

    +0

    @ cricket_007:あなたを正しく理解すれば、あなたは 'target =" \\。 "'を使うことを提案しています。 – gromit190

    答えて

    10

    "ターゲット"を正規表現として使用するには、そのターゲットをエスケープする必要があります。 お試しください

    String[] someStringSplit = someString.split(Pattern.quote(target)); 
    

    これが役に立ったら教えてください。

    1

    これを試すことができます。

    String target = "."; 
    String someString = "123.456"; 
    StringTokenizer tokenValue = new StringTokenizer(someString, target); 
    
    while (tokenValue.hasMoreTokens()) { 
        System.out.println(tokenValue.nextToken()); 
    } 
    
    +0

    ありがとうございますが、私は正規表現のリテラルにターゲット文字列をラップすることを好む。 – gromit190

    関連する問題