前几天在公司分割一个很简单字符串,结果却怎么测都不对,最后查了一下资料,终于发现了端倪:
split(regex);

replace(target, replacement);
replace(oldChar, newChar);

replaceFirst(regex, replacement);

replaceAll(regex, replacement)

仔细看一下,你会发现split()、replaceFirst()、replaceAll()的参数都是Regular Expression,也就是正则表达式,只有replace()的参数是字符或者字符串,由于这些参数类型的差异,很有将得不到预期的结果,下面是一些测试代码的例子,大家可以自己测一下


package cn.bridgeli.stringtest;
import org.junit.Test;

public class StringTest {

    @Test
    public void testSplit1() {
        String str = "111|222|333|444";
        String[] result = str.split("|");
        for (String string : result) {
            System.out.println(string);
        }

// String str = "111|222|333|444";  
// String[] result = str.split("\|");  
// for (String string : result) {  
// System.out.println(string);  
// }  
    }

    @Test
    public void testSplit2() {
        String str = "111,222,333,444";
        String[] result = str.split("\d");
        for (String string : result) {
            System.out.println(string);
        }

// String str = "111\222\333\444";  
// String[] result = str.split("\\");  
// for (String string : result) {  
// System.out.println(string);  
// }  
    }

    @Test
    public void testSplit3() {
        String str = "111222333444";
        String[] result = str.split("\");  
        for (String string : result) {
            System.out.println(string);
        }

// String str = "111\222\333\444";  
// String[] result = str.split("\\");  
// for (String string : result) {  
// System.out.println(string);  
// }  
    }

    @Test
    public void testReplaceAll() {
        String str = "111,222,333,444";
        String result = str.replaceAll(",", "$");
        System.out.println(result);

// String str = "111,222,333,444";  
// String result = str.replaceAll(",", "\$");  
// System.out.println(result);  
    }

}