日期:2014-05-20  浏览次数:20605 次

这样的字符串遍历,比较,截取
大家好!小弟java新手,想问问一个简单的字符串处理问题
字符串一:"10::101:ABC:102:GUANGZHOU :103:OK: "
字符串二: "10:$:101:ABC$:102:GUANGZHOU$:103:OK"
$为回车换行,即为:
10:
:101:ABC
:102:GUANGZHOU
:103:OK

我认为需要对字符串(非空部分)一里面的每一个字符去判断,对每对“:”,从上一对“:”的结束位置,到这一对“:”的第二个“:”之前字符串都要截取出来串到字符串二末尾,那么这里面需要用到对每一个字符截取、判断是否为“:”,添加“$”,记录上一对“:”的结束位置,这一对“:”的结束位置。

想请问一下以上都需要哪些具体的java 方法?效率方面可行么?

或者有什么其他快速有效的方法来遍历字符串一?

请指教,谢谢

------解决方案--------------------
Java code

public class Test {
    public static void main(String[] args) {
        String s1 = "10::101:ABC:102:GUANGZHOU :103:OK: ";
        String[] ss = s1.split(":");
        StringBuilder stringBuilder = new StringBuilder();
        int loops = ss.length - 1;
        for (int i = 0; i < loops; i += 2) {
            stringBuilder.append(ss[i]);
            stringBuilder.append(":");
            stringBuilder.append(ss[i + 1]);
            stringBuilder.append("$");
            stringBuilder.append(":");
        }
        String s2 = stringBuilder.toString();
          s2 = s2.substring(0, s2.length() - 2);
        System.out.println(s2);
    }
}

------解决方案--------------------
"10::101:ABC:102:GUANGZHOU :103:OK: ".replaceAll("(:\\d)", "\\$$1")