2016-11-23 57 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

我已经更新了我的答案,希望这个答案对您有所帮助。 –