omiga

简单就好

replace (searchValue, replaceValue)

3条评论»

字符串对象的replace方法作查找替换操作非常好用。

语 法
stringObject.replace(regexp,replacement)

regexp – 必需。规定了要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。

replacement – 必需。一个字符串值。规定了替换文本或生成替换文本的函数。

简单使用:

var s = 'he is a god girl!';
var pattern = /he/g;
alert(s.replace(pattern,"she"));

稍微复杂一点的使用:(回溯引用)

var s = 'i like GFW';
var pattern = /(GFW)/g;
alert(s.replace(pattern,"the great $1"));

当传入的替换文本参数为字符串时它还接受第三个参数

var str = "Apples are round, and apples are juicy.";
alert(str.replace("apples", "oranges", "gi"));

其实,这些都不是我想说的,我想说replacement为函数的情况。

ECMAScript v3 规定,replace() 方法的参数 replacement 可以是函数而不是字符串。在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数 是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。

根据以上说明,replace()可以通过为替换函数传入参数完成一些更为复杂的功能。

如将所有单词首字母转换成大写:

var s = "the great gFW";
var pattern = /\b\w+\b/g;
alert(s.replace(pattern,function(w){return w.substring(0,1).toUpperCase()+w.substring(1)}))

多传几个参数试试:

var s = "AAAbbbZZZ AAAcccZZZ AAAdddZZZ AAAeeeZZZ hijklmnopqrstuvwxy";
var pattern = /\b(AAA)(\w+)(ZZZ)\b/g;
alert(s.replace(pattern,function(w,w1,w2,w3,i){return i+w1+w2+w3+i}));

就这样了?可以继续传入参数吗?再试:

var s = "AAAbbbZZZ AAAcccZZZ AAAdddZZZ AAAeeeZZZ hijklmnopqrstuvwxy";
var pattern = /\b(AAA)(\w+)(ZZZ)\b/g;
s.replace(pattern,function(w,w1,w2,w3,i,x){alert(x)});

居然还有~···不过这个值从何而来我也迷惑了~···还可以传参数吗?再试!的确不可以了。

函数中第一个参数是匹配模式的字符串,接下来的参数是匹配模式中子表达式的字符串,数量与子表达式个数一致。当所有模式匹配参数都传递完后,后一个参数为匹配在字符串中出现的位置。根据这个特性可以发散出很多高级的应用。

饭否数据已成功导出

1条评论»

喜剧的是我是昨天从网易微博上得知饭否可以导出用户数据了,地址是这个http://www.fanfoublog.com/。昨晚7点多开始就登录提交,提示正在打包,让我F5,直到今天中午才打包完成。饭否也挺不容易的。打包的数据包括消息、私信、照片、收藏。

我的数据:

  • 关注:57
  • 被关注:58
  • 消息:1372
    最早的一条:AE,AI,AS3学习中~··· 2007-08-06 21:36 通过网页 (应该有更早的,被我删了)
    最晚的一条:困磕睡! 2010-01-27 23:49 通过短信(饭否虽然被和谐N久了,其实一直可以通过短信发消息的)
  • 照片:0
  • 收藏:9
  • 私信:50

尽管饭否强调:“能导出资料和饭否能否恢复、何时恢复之间并没有必然联系”,但是恐怕没有多少人再对饭否抱啥希望了,九死一生了,用户也流失殆尽了。就这样了,如今微博已成为各大门户的标配,我也放弃饭否了。