答案 0 :(得分:17)
您链接到的String.replace()
方法需要两个char
值,因此它只会将字符替换为另一个(可能多次,但是)。
另一方面StringUtils.replace()
方法将String
值作为搜索字符串和替换值,因此它可以替换更长的子字符串。
Java中的可比方法是replaceAll()
。 replaceAll()
可能比StringUtils
方法慢,因为它支持正则表达式,因此会引入首先编译搜索字符串并运行正则表达式搜索的开销。
请注意,Java 5引入了String.replace(CharSequence, CharSequence)
,其作用与StringUtils.replace(String,String)
完全相同(但如果其任何参数为NullPointerException
则抛出null
除外)。请注意,CharSequence
是由String
实现的界面,因此您可以在此处使用普通的旧String
对象。
答案 1 :(得分:3)
public class Compare {
public static void main(String[] args) {
StringUtils.isAlphanumeric(""); // Overhead of static class initialization for StringUtils
String key = "0 abcdefghijklmno" + Character.toString('\n') + Character.toString('\r');
String key1 = replace1(key);
String key2 = replace2(key);
}
private static String replace1(String key) {
long start = System.nanoTime();
key = StringUtils.replaceChars(key, ' ', '_');
key = StringUtils.replaceChars(key, '\n', '_');
key = StringUtils.replaceChars(key, '\r', '_');
long end = System.nanoTime() - start;
System.out.println("Time taken : " + end);
return key;
}
public static String replace2(String word) {
long start = System.nanoTime();
char[] charArr = word.toCharArray();
int length = charArr.length;
for (int i = 0; i < length; i++) {
if (charArr[i] == ' ' || charArr[i] == '\n' || charArr[i] == '\r') {
charArr[i] = '_';
}
}
String temp = new String(charArr);
long end = System.nanoTime() - start;
System.out.println("Time taken : " + end);
return temp;
}
}
所用时间:6400
所用时间:5888
时间几乎相同!
我编写了代码以消除replace2
的开销,这些开销不是因为JDK的实现。
答案 2 :(得分:2)
1.4.2替换只能用char
个参数进行操作,而Apache 2.3用于字符串。
答案 3 :(得分:1)
String.replace(char, char)
无法替换整个字符串null
获得StringUtils.replace(..)
个值。 String.replace(CharSequence s1, CharSequence s2)
将执行相同的操作。否则会抛出NullPointerException
答案 4 :(得分:0)
答案 5 :(得分:0)
要使用StringUtil.Replace
将字符串字符替换为另一个字符串,我尝试了以下操作,我可以从单个字符串替换多个字符串值。
String info = "[$FIRSTNAME$]_[$LASTNAME$]_[$EMAIL$]_[$ADDRESS$]";
String replacedString = StringUtil.replace(info, new String[] { "[$FIRSTNAME$]","[$LASTNAME$]","[$EMAIL$]","[$ADDRESS$]" }, new String[] { "XYZ", "ABC" ,"abc@abc.com" , "ABCD"});
这将用新提供的值替换info的String值...