2016-09-07 26 views
1

実際にこれを行う方法には苦労しています。私は「ワン」と「ファイブ」Java:特定の文字をインデックスの文字列の部分文字列に置き換えます。

「このStrOneng iFive楽しい」

と5で「1」置き換えたい私は、この文字列

「このStr1ng i5の楽しさ」

を持っていると言います

私は徹底したループに文字列を試してみましたが、それらを手動で交換するが、カウントがオフになっています。私はまた、などのリスト、配列、のStringBuilderを、使用しようとしましたが、私はそれを動作させることはできません。

char[] stringAsCharArray = inputString.toCharArray(); 
ArrayList<Character> charArraylist = new ArrayList<Character>(); 

for(char character: stringAsCharArray) { 
    charArraylist.add(character); 
} 

int counter = startPosition; 

while(counter < endPosition) { 
    char temp = charArraylist.get(counter); 
    String tempString = Character.toString(temp); 
    if(Character.isDigit(temp)){ 
     char[] tempChars = digits.getDigitString(Integer.parseInt(tempString)).toCharArray(); //convert to number 

     charArraylist.remove(counter); 
     int addCounter = counter; 
     for(char character: tempChars) { 
      charArraylist.add(addCounter, character); 
      addCounter++; 
     } 

     counter += tempChars.length; 
     endPosition += tempChars.length; 
    } 
    counter++; 
} 

サブの文字列で単一の文字を交換するための簡単な方法がなければならないように私は感じますこのすべてを繰り返す必要はありません。私はここで間違っていますか?

答えて

2
String[][] arr = {{"1", "one"}, 
          {"5", "five"}}; 

String str = "String5"; 
for(String[] a: arr) { 
    str = str.replace(a[0], a[1]); 
} 

System.out.println(str); 

これは、複数の単語を異なるテキストに置き換えるのに役立ちます。

代わりに使用することができ、例えば、これを行うために置き換えるチェーン:Java Replacing multiple different substring in a string at once (or in the most efficient way)

str.replace(1, "One").replace(5, "five"); 

は、このより良いアプローチをチェック

2

あなたは

string = string.replace("1", "one"); 
  1. それは正規表現の一致に基づいて置き換えられるので、あなたはパターン内の特殊文字について注意する必要がありますように、ここでの問題ではない、(、replaceAllを使用しないでくださいを行うことができます)。

  2. すべての代わりにreplaceも置き換えられます。

  3. 文字列は不変なので、必ず結果の値をどこかに代入してください。

1

以下試してみてください。

string = string.replace("1", "one"); 
string = string.replace("5", "five"); 

.replaceは、指定された文字列で指定した文字列のすべての出現箇所を置換し、かつ非常に便利です。

関連する問題