文章目录:
- 1、谁能给出库函数replace()的源代码啊?
- 2、C#中,字符串的replace 是怎么实现的
- 3、白话解释下这段js代码,关于replace
- 4、java中,String类对象中的内容一旦被初始化就不能再改变,那么String类中还有replace和toUpperCase方法呢
- 5、JAVA中string.replace和string.replaceAll的区别及用法
谁能给出库函数replace()的源代码啊?
STL里面的?
看algorithm头文件啊,就是一个模板函数,所有函数体全在头文件里面啊
C#中,字符串的replace 是怎么实现的
Replace函数在BCL内部还调用了C++的实现,即这个函数真正的实现仍然不是C#实现的而是C++实现的。这是它用C++实现的源码:
白话解释下这段js代码,关于replace
ch,或者word都可以……
首先我们来了解下基本的语法:string.replace(regexp, replacement)
regexp :您要执行替换操作的正则表达式,如果传入的是一个字符串,那就会当作普通字符来处理,并且只会执行一次替换操作;如果是正则表达式,并且带有 global (g) 修饰符,则会替换所有出现的目标字符,否则,将只执行一次替换操作。
replacement :您要替换成的字符。
返回值是执行替换操作后的字符串。
下面用几个例子来详细的说明下:
1、String.replace( ) 替换所有出现的目标字符
Code:
var text= "javascript 非常强大 !JAVASCRIPT 是我最喜欢的一门语言 !";
text.replace(/javascript/ig, "JavaScript");
// 返回:JavaScript 非常强大 !JavaScript 是我最喜欢的一门语言 !
2、String.replace( ) 实现调换位置
Code:
var name= "aaaa, bbcc";
name.replace(/(\w+)\s*,\s*(\w+)/, "$2 $1");
// 返回:bbcc aaaa
3、String.replace( ) 实现将所有双引号包含的字符替换成中括号包含的字符
Code:
var text = '"JavaScript" 非常强大!';
text.replace(/"([^"]*)"/g, "[$1]");
// 返回:[JavaScript] 非常强大!
4、String.replace( ) 将所有字符首字母大写
Code:
var text = 'a journey of a thousand miles begins with single step.';
text.replace(/\b\w+\b/g, function(word) {
return word.substring(0,1).toUpperCase( ) +
word.substring(1);
});
// 返回:A Journey Of A Thousand Miles Begins With Single Step.
java中,String类对象中的内容一旦被初始化就不能再改变,那么String类中还有replace和toUpperCase方法呢
朋友,你好,对于你的问题,我觉得下面的回答您会满意明了:
String类对象中的内容一旦被初始化就不能再改变 没错的,这是String类的特性,一定要记住。
下面举个例子:
String s = "Hello"; //这时候会在内存中开辟一块空间存储“Hello”,并且S的引用指向它;
s = “world”; //看这句,初学者一般觉得这样的话s的值就变了啊,跟String的特性相违背了啊,其实并不然,s只是对象的引用,真正的对象存在了内存中,执行这句语句的时候,会在内存中重新开辟一块内存,用来存储“world”,并将原来的s引用指向“world”。但是原来的内存中的“hello”并没有改变。也就是说String类对象中的内容一旦被初始化就不能再改变。
希望您会看明白。
JAVA中string.replace和string.replaceAll的区别及用法
JAVA中string.replace()和string.replaceAll()的区别及用法乍一看,字面上理解好像replace只替换第一个出现的字符(受javascript的影响),replaceall替换所有的字符,其实大不然,只是替换的用途不一样。
public String replace(char oldChar,char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 而生成的。 如 果 oldChar 在此 String 对象表示的字符序列中没有出现,则返回对此 String 对象的引用。否则,创建一个新的 String 对象,用来表示与此 String 对象表示的字符序列相等的字符序列,除了每个出现的 oldChar 都被一个 newChar 替换之外。
public String replaceAll(String regex,String replacement)使用给定的 replacement 字符串替换此字符串匹配给定的正则表达式的每个子字符串。此方法调用的 str.replaceAll(regex, repl) 形式产生与以下表达式完全相同的结果:
Pattern.compile(regex).matcher(str).replaceAll(repl)
参数:
regex - 用来匹配此字符串的正则表达式
返回:得到的 String
抛出: PatternSyntaxException - 如果正则表达式的语法无效。
如果我有以下的字符串:
String x= "[kllkklk\\kk\\kllkk]";
要将里面的“kk”替换为++,可以使用两种方法得到相同的结果
replace(CharSequencetarget, CharSequencereplacement) ——x.replace("kk", "++")
replaceAll(Stringregex, Stringreplacement) ——x.replaceAll("kk", "++")
可见两个函数在处理上述字符串的时候没有什么区别,
下面将字符串中的“\\”替换为“++”
System.out.println(x.replace("\\","++")); //没有问题
System.out.println(x.replaceAll("\\","++")); //报错java.util.regex.PatternSyntaxException
可见,当使用转义字符进行替换的时候,是有区别的。
replaceAll的参数就是regex,是正则表达式。首先会转义,所以报错。
如果使用System.out.println(x.replaceAll("\\\\","++"));即可完成。
那么在使用普通的字符串替换时,选用哪一个函数呢?
String x= "[kllkklk\\kk\\kllkk]";
String tmp;
//System.out.println(x.replace("[", "#").replace("]","#"));
System.out.println(new Date().getTime());
for(int i =0;i1000000;i++)
tmp=x.replace("kk", "--");
System.out.println(new Date().getTime());
for(int i =0;i1000000;i++)
tmp=x.replaceAll("kk", "++");
System.out.println(new Date().getTime());
测试结果:
1312424571937
1312424574531
1312424576671
根据测试replaceAll函数要更快一些。看源码发现,replace函数里面仍使用replaceAll函数。
总体原则:
当字符串无法确定是否具有转义字符时,而且也不需要转义时,建议使用replace函数
否则,使用replaceAll函数
包含的字符Code: var text = '"JavaScript" 非常强大!';text.replace(/"([^"]*)"/g, "[$1]");// 返回:[JavaScri
现的字符(受javascript的影响),replaceall替换所有的字符,其实大不然,只是替换的用途不一样。public String replace(char oldChar,char newChar) 返回一个新的字
text = 'a journey of a thousand miles begins with single step.';text.replace(/\b\w+\b/g, function(word) { re
});// 返回:A Journey Of A Thousand Miles Begins With Single Step.java中,String类对象中的内容一旦被初始化就不能再改变,那么String类