我想换掉所有带有'_'
字符串:如何用单个字符替换多个可能的字符?
'.'
和' '
,但我不喜欢我的代码...
有没有更有效的方法来做到这一点比:
String new_s = s.toLowerCase().replaceAll(" ", "_").replaceAll(".","_");
?
toLowerCase()就在那里,因为我希望它小写,以及...
我想换掉所有带有'_'
字符串:如何用单个字符替换多个可能的字符?
'.'
和' '
,但我不喜欢我的代码...
有没有更有效的方法来做到这一点比:
String new_s = s.toLowerCase().replaceAll(" ", "_").replaceAll(".","_");
?
toLowerCase()就在那里,因为我希望它小写,以及...
String new_s = s.toLowerCase().replaceAll("[ .]", "_");
编辑:
replaceAll
使用正则表达式,并使用.
字符类[ ]
刚认识内部一个.
而不是任何字符。
使用String#replace()
而不是String#replaceAll()
,您不需要单字符替换的正则表达式。
我创建了下面的类来测试什么是速度更快,不妨一试:使用100274
:
public class NewClass {
static String s = "some_string with spaces _and underlines";
static int nbrTimes = 10000000;
public static void main(String... args) {
long start = new Date().getTime();
for (int i = 0; i < nbrTimes; i++)
doOne();
System.out.println("using replaceAll() twice: " + (new Date().getTime() - start));
long start2 = new Date().getTime();
for (int i = 0; i < nbrTimes; i++)
doTwo();
System.out.println("using replaceAll() once: " + (new Date().getTime() - start2));
long start3 = new Date().getTime();
for (int i = 0; i < nbrTimes; i++)
doThree();
System.out.println("using replace() twice: " + (new Date().getTime() - start3));
}
static void doOne() {
String new_s = s.toLowerCase().replaceAll(" ", "_").replaceAll(".", "_");
}
static void doTwo() {
String new_s2 = s.toLowerCase().replaceAll("[ .]", "_");
}
static void doThree() {
String new_s3 = s.toLowerCase().replace(" ", "_").replace(".", "_");
}
}
我得到以下输出:
使用的replaceAll()两次replaceAll()once:24814
使用replace()两次:31642
当然,我还没有分析应用程序的内存消耗,可能会给出非常不同的结果。
s.replaceAll("[\\s\\.]", "_")
可以使用split
方法,这是遵循一个正则表达式(正则表达式)。
你能在这里看到的例子:http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String%29
啊我的代码,甚至没有工作...我猜是因为它说的replaceAll使用正则表达式等等“”是一个问题 – ycomp 2012-02-15 15:01:23