开放式问题。
你来定义“常见的字符串格式化需求”,并给出代码。这里举出一些例子吧
- 把秒数转化为歌曲剩余时间
- 把数字金额转化为大写汉字金额
- 把输入的任意电话号转化为中间有杠的版本,如
135-3425-0099
- 在位数不定的数字前面补充一定位数的0,直到为固定的长度
- 随机颜色
- 随机身份证号
- 将较大的数字,每三位加一个","
想想大家都有积累这种代码片段吧,不妨放出来让大家相互学习一下:)
开放式问题。
你来定义“常见的字符串格式化需求”,并给出代码。这里举出一些例子吧
135-3425-0099
想想大家都有积累这种代码片段吧,不妨放出来让大家相互学习一下:)
抛砖引玉~
// 仅限于数字
function prefixInteger(num, length) {
return (num / Math.pow(10, length)).toFixed(length).substr(2);
}
prefixInteger(10,4)
-> "0010"
// 什么都可以传
function prefixInteger(str, length) {
return Array(length+1).join("0").split("").concat(String(str).split(""))
.slice(-length).join("");
}
prefixInteger("abc",6)
-> "000abc"
Number("111123123123.1234").toLocaleString()
-> "111,123,123,123.123"
Number("111123123123.1234").toFixed(2).toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,")
-> "111,123,123,123.12"
"#" + prefixInteger( (Math.random() * 0xffffff).toString(16).replace(/\..*$/,"") , 6 );
-> "#02fe45"
Math.random().toString(16).substring(2); //14位
-> "52701a4e"
Math.random().toString(36).substring(2); //11位
-> "9o7egmvjw7ki6bt9"
function strrep(str,obj){
return str.replace(/\$\w+\$/gi, function(matchs) {
var returns = obj[matchs.replace(/\$/g, "")];
return typeof returns === "undefined" ? "" : returns;
});
}
strrep(
'<img src="$thesrc$" class="$theclass$">', {
"thesrc":"http://s.segmentfault.com/img/logo.png?coiweJ" ,
"theclass":"fl tc"
}
)
-> "<img src="http://s.segmentfault.com/img/logo.png?coiweJ" class="fl tc">"
9 回答9.4k 阅读
6 回答5.1k 阅读✓ 已解决
5 回答3.7k 阅读✓ 已解决
4 回答8k 阅读✓ 已解决
7 回答10.1k 阅读
5 回答8.3k 阅读
2 回答10.4k 阅读✓ 已解决
其中
number_string.time
格式化歌曲时间的,这个是我之前的项目里面抄过来的number_string.fill
按位补充的,这个是我现写的,以前也写过找不到了OAQnumber_string.randRGBA
随机颜色的,这个是从 @P酱 那里摘抄过来的(第二次修改整体格式的时候又稍微改了一下)。number_string.format
各种高大上格式化数字的,这个则是从 PHPJS 那里摘抄过来的。number_string.upper
转换数字为中文大写,刚写的,在unit = true
的时候会给数字加上单位(暂时只设定对12位数有效,太高了我感觉也没必要了)。补充两个从网上摘抄的代码
number_string.date
是格式化时间的,来源地址。不过还是比较倾向于用 PHPJS 的这个。number_string.replace
是类似printf
这种模板替换的,来源地址。