2016-11-23 10 views
-4

私はjava replaceallメソッドのアルゴリズムを必要としています。このメソッドはcharAtとlengthメソッドを使用しています。私は試してみましたが、ıdidntはそれを助けてください。私の悪い英語のために申し訳ありません。Java置換アルゴリズムのアルゴリズム?

+0

JavaやJavaScriptの? – hackerrdave

+1

'このメソッドはcharAtとlengthメソッドのみを使用しています。' ... Javaの 'String.replaceAll'は正規表現のパターンマッチングもサポートしていますので、正規表現エンジンを必要なトリックの袋に入れてください。 –

+0

ıJava for –

答えて

-1

質問が明確でない

私はあなたが欲しいものを知りません。コードをの文字列またはの代わりに他の文字列のに置き換えますか?これはuの簡単な例です。

public static String replace(String source,char oldChar,char newChar){ 
    char[] temp = source.toCharArray(); 
    StringBuilder result = new StringBuilder(); 
    for (char c : temp) { 
     if(c == oldChar){ 
      result.append(newChar); 
     }else result.append(c); 
    } 
    return result.toString(); 
} 

多分それはあなたが必要とするソリューションですが、私はあなたの質問を理解していない:/

public static String replaceStr(String source, String oldSR, String newSR) { 
    List<Integer> positions = findPosition(source, oldSR); 
    int lengthOldSr = oldSR.length(); 
    for (Integer position : positions) { 
     StringBuilder result = new StringBuilder(""); 
     int lengthSource = source.length(); 
     for (int i = 0; i < lengthSource; i++) { 
      if (position == i) { 
       result.append(newSR); 
       i += lengthOldSr - 1; 
      } else { 
       result.append(source.charAt(i)); 
      } 
     } 
     source = result.toString(); 
    } 
    return source; 
} 

public static List<Integer> findPosition(String source, String oldSR) { 
    int lengthOld = oldSR.length(); 
    int lengthSource = source.length(); 
    List<Integer> positions = new ArrayList<>(); 
    for (int i = 0; i < lengthSource; i++) { 
     int count = 0; 
     for (int j = 0; j < lengthOld; j++) { 
      if ((j + i < lengthSource) && source.charAt(j + i) == oldSR.charAt(j)) { 
       count++; 
      } 
     } 
     if (count == lengthOld) { 
      positions.add(i); 
     } 
    } 
    positions.sort(Comparator.reverseOrder()); 
    return positions; 
} 

}

INPUT:ソースTUYENDEV 123 TUYENDEV 123 STACKOVER ,新しい

OUTPUT:TUYENDEV 456 TUYENDEV 456 STACKOVER

+0

//ご協力いただきありがとうございます。私の方法は次のように動作し、ıはcharAtとlength.//のみを使用できます。 1)最初の文字列を入力してください: 2)2番目の文字列を入力してください 3)3番目の文字列を入力してください。 出力ifの場合。 –

+0

私は私の答えを更新しました。私はこの答えがあなたに役立つことを願っています。 –

関連する問題