【问题标题】:Algorithm of java replaceall method? [closed]java replaceall方法的算法? [关闭]
【发布时间】:2017-04-06 20:57:51
【问题描述】:

我需要 java replaceall 方法的算法,我想写这个方法只使用 charAt 和 length 方法。我尝试但我没有这样做,请帮助我。对不起我的英语不好。

【问题讨论】:

  • java 还是 javascript?
  • I want write this method only use charAt and length methods. ... Java 的 String.replaceAll 也支持正则表达式模式匹配,所以将正则表达式引擎放入您需要的技巧包中。
  • 我投票结束这个问题,因为题外话,这个问题不显示努力......
  • pshemo 谢谢你。我是编程新手,感谢您的帮助

标签: java string replace


【解决方案1】:

您的问题不清楚

我不知道你想要什么。您希望代码替换其他字符串中的 stringcharacter 吗?这是一个简单的例子。

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 123 456

输出:TUYENDEV 456 TUYENDEV 456 堆叠

【讨论】:

  • //感谢您的帮助。我的方法如下,我只能使用charAt和length。// 1)输入第一个字符串:do while if do if 2)输入第二个字符串:do 3)输入第三个字符串:输出:for while if for if。
  • 我已经更新了我的答案。希望这个答案对你有帮助。
猜你喜欢
  • 2013-09-03
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 2015-04-28
  • 2012-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多