JavaScript-js如何将一个字符串中的大写转为写小写,小写转换为大写?

JavaScript-js如何将一个字符串中的大写转为写小写,小写转换为大写?

虐人心 发布于 2017-07-04 字数 144 浏览 1296 回复 4

将一个字符串中的大写转换为小写,将小写转换为大写, 字符串中有可能也存在中文或者其他特殊字符,都不做处理。有没有一个比较简单有效的方法呢?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

泛泛之交 2017-09-28 4 楼

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
var str='a12@动A';
alert(str.replace(/([A-Za-z])/g,function($1){var tmp=$1.charCodeAt(0)>=97?$1.charCodeAt(0)-32:$1.charCodeAt(0)+32;return String.fromCharCode(tmp);}));
</script>
</head>
<body>
</body>
</html>

归属感 2017-09-26 3 楼

我这里也写了一个函数可以相互转换,虽然没有正则简洁,但是功能倒是能完成你的需求

//测试
var str = 'aasf中s国@DSFSA测试DFA';
str = changeChar(str);
alert(str);

看看效果:

<script type="text/javascript">
function changeChar(str){
var ret = '';
var start = 0;
for(var i=0; i<str.length; i++){
var x= str.charCodeAt(i);
if(x > 64 && x <91 ){
if(start){
ret += str.substring(start, i);
}
ret += String.fromCharCode(x+32);
start = 0;
}else if(x > 96 && x <123 ){
if(start){
ret += str.substring(start, i);
}
ret += String.fromCharCode(x-32);
start = 0;
}else{
if(start){
continue;
}
if(x>0x81){
start = i;
}else{
ret += String.fromCharCode(x);
}
}
}
return ret;
}
</script>

归属感 2017-08-13 2 楼

简单些了一个测试通过

var str='abdcDeFDdf中文,fd。';

str = str.replace(/([a-z]+)(.*?)([A-Z]*)/g,function(m,m1,m2,m3){
return m1.toUpperCase()+m2+m3.toLowerCase();
})
alert(str);

虐人心 2017-07-14 1 楼

 var str = 'abdcDeFDdf中文,fd。';
var reg1 = /[a-z]+/; //匹配小写
var reg2 = /[A-Z]+/; //匹配大写
var arr = str.split("");
var new_str = '';
for(var i=0;i<arr.length;i++){
if(reg1.test(arr[i])){
new_str += arr[i].toUpperCase();
}else if(reg2.test(arr[i])){
new_str += arr[i].toLowerCase();
}else
{
new_str += arr[i];
}
}
alert(new_str);