2016-11-23 65 views
-4

我需要的Java的replaceAll方法的算法,我希望寫這個方法只使用的charAt和長度methods.I嘗試,但我沒有做到這一點,請幫助我。對不起,我的英語不好。java替換方法的算法?

+0

Java或JavaScript的? – hackerrdave

+1

'我希望寫這個方法只使用的charAt和長度methods.' ... Java的'String.replaceAll'還支持正則表達式模式匹配,所以拋出一個正則表達式引擎到您所需要的錦囊。 –

+0

爲Java –

回答

-1

你的問題不清楚

我不知道你想要什麼。你想要的代碼替換從其他字符串的字符?這是你的簡單例子。

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

}

輸入:TUYENDEV 123 TUYENDEV 123 STACKOVER

OUTPUT:TUYENDEV 456 TUYENDEV 456 STACKOVER

+0

//感謝您的幫助。我的方法的工作原理如下,我只能使用的charAt和length.// 1)輸入第一個字符串:做而如果做,如果 2)輸入第二個字符串:做 3)輸入第三個字符串:對於 輸出:對同時如果爲if。 –

+0

我已經更新了我的答案,希望這個答案對您有所幫助。 –