js字符转换
程序员文章站
2022-03-31 17:00:21
...
<script>
/*
如果把对象用在数值运算环境中,则对象会被自动转换成数字,如果转换失败,则返回值为NaN。
当数组被用在数值运算环境中,数组将根据包含的元素来决定转换的值。如果数组是空数组,则被转换为0.如果转换的数组仅
包含一个数字元素,则被转换成该数字数值,如果数组中包含多个元素,或者仅包含一个非数字的元素,则返回NaN。
当对象用于字符串环境变量,JavaScript能够调用toString()方法把对象转换为字符串再进行相关计算。
*/
</script>
<script>
/*
replace()方法可以实现字符串替换操作,该方法包含两个参数,第一个参数表示执行匹配的正则表达式,也可以传递
字符串,第二个参数表示准备替换的子字符串。
*/
var s = "index.html";
var b = s.replace(/html/, "htm");
document.write("</br>" + b + "</br>");
/*
replace()中约定了一个特殊的字符'$',如果则个美元符号附加了一个序号,就表示引用正则表达式中匹配的子表达式存储的字符串。
*/
var s = "javascript";
//再这里面$1,$2分别表示引用正则表达式匹配到的字符串 script 和 java
var b = s.replace(/(java)(script)/, "$2-$1");
document.write("</br>" + b + "</br>");//script-java
var c = s.replace(/(script)(java)/, "$1-$2");
document.write(c + "</br>");//javascript
/*
$1、$2.....$99 表示与中则表达式中的第1~99个子表达式像匹配的文本
$& 表示与正则表达式相匹配的子字符串
$` 表示位于匹配子字符串左侧的文本
$' 表示位于匹配子字符串右侧的文本
$$ 表示美元符
*/
var s = "javascript";
//.*表示完全匹配,也就是 s 的所有内容,所以$&表示的就是s
var b = s.replace(/.*/, "$&-$&");
document.write("</br>" + b +"</br>");//javascript-javascript
var s = "javascript";
//$& 表示匹配的字符串,使用script匹配到的字符串是javascript
var b = s.replace(/script/, "$& != $`");
document.write("</br>" + b + "</b>");//javascript != java
var s = "javascript";
var b = s.replace(/java/, "$&$' is ");
document.write("</br>" + b + "</br>"); //javascript is script
//replace()方法的第二个参数可以使用函数
var s = 'script language = "javascript" type = "text/javascript"';
var f = function($1){
return $1.substring(0, 1).toUpperCase() + $1.substring(1);
}
var a = s.replace(/(\b\w+\b)/g, f);
document.write("</br>" + a + "</br>");//Script Language = "Javascript" Type = "Text/Javascript"
var f = function($1, $2, $3){
return $2.toUpperCase() + $3;
}
var a = s.replace(/\b(\w)(\w*)\b/g, f);
document.write(a + "</br>");//Script Language = "Javascript" Type = "Text/Javascript"
var f = function(){
return arguments[1].toUpperCase() + arguments[2];
}
var a = s.replace(/\b(\w)(\w*)\b/g, f);
document.write(a + "</br>");//Script Language = "Javascript" Type = "Text/Javascript"
//测试arguments
var s = 'script language = "javascript" type = "text/javascript"';
var f = function(){
for (var i = 0; i < arguments.length; i++){
document.write("第" + (i + 1) + "个参数的值:" + arguments[i] + "</br>");
}
}
s.replace(/\b(\w)(\w*)\b/g, f);
/*
第1个参数的值:script
第2个参数的值:s
第3个参数的值:cript
第4个参数的值:0
第5个参数的值:script language = "javascript" type = "text/javascript"
第1个参数的值:language
第2个参数的值:l
第3个参数的值:anguage
第4个参数的值:7
第5个参数的值:script language = "javascript" type = "text/javascript"
第1个参数的值:javascript
第2个参数的值:j
第3个参数的值:avascript
第4个参数的值:19
第5个参数的值:script language = "javascript" type = "text/javascript"
第1个参数的值:type
第2个参数的值:t
第3个参数的值:ype
第4个参数的值:31
第5个参数的值:script language = "javascript" type = "text/javascript"
第1个参数的值:text
第2个参数的值:t
第3个参数的值:ext
第4个参数的值:39
第5个参数的值:script language = "javascript" type = "text/javascript"
第1个参数的值:javascript
第2个参数的值:j
第3个参数的值:avascript
第4个参数的值:44
第5个参数的值:script language = "javascript" type = "text/javascript"
*/
</script>
<script>
//提取字符串中的分数,计算出平均分
var s = "张三56分,李四74分,王五92分,赵六84分";
//求出平均数,将字符串中的分数存储到一个数组中
var a = s.match(/\d+/g),sum=0;
for (var i = 0; i < a.length; i++){
sum += parseFloat(a[i]);
}
var avg = sum / a.length;
//重新处理字符串,对所得分数进行评价
function f(){
var n = parseFloat(arguments[1]);
return n + "分" + "(" + ((n > avg) ? ("超出平均分" + (n - avg)) : ("低于平均分" + (avg - n))) + "分)";
}
var s1 = s.replace(/(\d+)分/g, f);
document.write(s1);
</script>
上一篇: linux下使用mysql的小问题