JS字符串
基本包装类型
-
为了方便操作简单数据类型,JavaScript还提供了三个特殊的简单类型类型:String/Number/Boolean
-
实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据
var s1 = "some text"; var s2 = s1.substring(2); //以上过程分为三步 //1.创建 String 类型的一个实例; //2.在实例上调用指定的方法; //3.销毁这个实例。 var s1 = new String("some text"); var s2 = s1.substring(2); s1 = null; // 为什么我们不能给基本类型扩展属性或方法 var str = "1234444"; str.name = "hello"; // 解析如下: var _str = new String("1234444"); _str.name = "hello"; _str = null;
concat方法
- 使用字符串的concat的方法可以把多个参数添加到指定字符串的尾部
- 参数类型和个数没有限制,把所有参数转换为字符串,返回连接以后的字符串
- 特定情况下,可以使用加法 和 数组的join 拼接字符串
- 原本数组的join方法代替concat方法,速度很快。但是当代浏览器优化加号拼接。所以推荐使用加号拼接
var str = "hello";
var _str = str.concat("world","oh");
console.log(str);//hello
console.log(_str);//helloworldoh
var str2 = "hello";
var _str2 = str.concat("world",['oh','nice'],{name:"laowang"});
console.log(str2);//hello
console.log(_str2);//helloworldoh,nice[object Object]
var straLL = "0123456789abcdefghijklmnopqrstuvwxyz";
var strArr = [];
for (var i = 0; i < 20; i++) {
var strNum = Math.floor(Math.random() * straLL.length)
strArr.push(straLL[strNum]);
}
var finallyStr = strArr.join("");
console.log(finallyStr);
字符串查找
- charAt(n) 返回字符串中的第n个字符,参数如果不是0 --- length-1 之间,则返回空字符串
- indexOf和lastIndexOf:可以根据参数字符串,返回指定子字符串的下标位置。 两个方法都有两个参数,第一个参数查找的目标,第二个参数是起始位置
- search 方法于indexOf的功能是相同的,查找指定字符串第一次出现的位置,但是只有一个参数,定义匹配模式,没有反向检索和全局模式。
- macth方法能够找出所有匹配的子字符串,并以数组的形式返回,如果匹配模式没有指定全局,则进行1次匹配。如果没找到则返回null
// 01.charAt
var str = "hello i am fine thankyou";
console.log(str.charAt(8));//a
console.log(str.charAt(0));//a
console.log(str.charAt(str.length));//空字符串
//02.indexOf()和lastIndexOf()
var str = "hello i am fine thankyou";
console.log(str.indexOf("a"));//8
console.log(str.lastIndexOf("a"));//18
console.log(str.indexOf("a",9));//18
console.log(str.lastIndexOf("a",5));//-1 倒着查 5是下标
// 03.search();
var str = "110p1101h110";
var index1 = str.search(/[a-zA-Z]/g);
console.log(index1);
// 04.match()
var str = "110p1101h110";
var index2 = str.match(/[a-zA-Z]/g);
console.log(index2);//["p","h"]
字符串截取
- substr方法:substr能够根据指定长度来截取子字符串。包含两个参数,一个是起始下标,一个是截取的长度。省略第二个参数则代表末尾(ECMA不再推荐该方法)
- slice和substring方法都是根据指定的起止下标来截取字符串的,包含两个参数,一个是开始下标,一个是结束下标(不包含),第二个参数省略则代表末尾
- 起始和结束位置相比较的大小无法确定的时候可以使用substring。
- 如果为负值,slice能把负值当作从右向左。而substring视其无效
var str = "today is a fine day";
var _str = str.substr(4,5);
console.log(str);//today is a fine day
console.log(_str);//y is
var _str = str.substr(4);
console.log(_str);//y is a fine day
var str2 = "today is a fine day";
var _str2 = str2.substring(4,8);
console.log(str2);//today is a fine day
console.log(_str2);//y is
var _str2 = str2.substring(4);
console.log(_str2);//y is a fine day
var str3 = "today is a fine day";
var _str3 = str3.slice(4,8);
console.log(str3);//today is a fine day
console.log(_str3);//y is
var _str3 = str3.slice(4);
console.log(_str3);//y is a fine day
var str3 = "today is a fine day";
var _str3 = str3.slice(4,-11);
console.log(str3);//today is a fine day
console.log(_str3);//y is a
var str2 = "today is a fine day";
var _str2 = str2.substring(4,-1);
console.log(str2);//today is a fine day
console.log(_str2);//toda
字符串大小转换
- toLowerCase():将字符串转换成小写
- toUpperCase():将字符串转换成大写
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>字符串的大小写转换</title>
<style>
#ipt{
width: 200px;
height: 50px;
border: 1px solid red;
}
</style>
</head>
<body>
<div id="outer">
请输入验证码:
<input type="text" id="ipt">
<button id="con">hj76tr</button>
</div>
<script>
/*
* toLowerCase() 转成小写字母
* toUpperCase() 转成大写字母
* */
var oCon = document.getElementById("con");
var oIpt = document.getElementById("ipt");
oIpt.onchange = function () {
if (oIpt.value.toLowerCase() === oCon.innerHTML) {
oIpt.style.borderColor = "green";
}
}
</script>
</body>
</html>
字符串与数组转换
- 使用字符串的split方法可以根据指定的分割符把字符串切分成数组
- 如果参数是空字符串,则按照单个字符切分,返回和字符串等长的数组
- 如果没有参数,则把字符串当作返回数组的一个值
- 支持第二个参数,代表数组的最大长度
var str = "哎,呦,不,错,哦"; var arr = str.split(); var arr2 = str.split(''); var arr3 = str.split(','); var arr4 = str.split(',',3); console.log(str); console.log(arr);//["哎,呦,不,错,哦"] console.log(arr2);// ["哎", ",", "呦", ",", "不", ",", "错", ",", "哦"] console.log(arr3);//["哎", "呦", "不", "错", "哦"] console.log(arr4);// ["哎", "呦", "不"]
清除两侧空字符串
- ES5新增了trim方法,用以从字符串中移除前导空字符和尾部空字符和行行终止符
- 常用在表单
var str1 = " kajsbd asknj df asf adf \n";
console.log(str1.trim());
将字符串转换成对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>将字符串转换成对象</title>
</head>
<body>
<script>
// http://www.baidu.com?username=xiaowang&password=12345&age=18&sex=女&score=90
// {username:"xiaowang",password:12345,age:18,sex:"女",score:90}
var url = "http://www.baidu.com?username=xiaowang&password=12345&age=18&sex=女&score=90";
var obj = {};
var strArr = url.split("?");
// console.log(strArr[1]);//username=xiaowang&password=12345&age=18&sex=女&score=90
var strArr2 = strArr[1].split("&");
// console.log(strArr2);//["username=xiaowang", "password=12345", "age=18", "sex=女", "score=90"]
for (var i = 0; i < strArr2.length; i++) {
// strArr2[i].split("=")//["username","xiaowang"]
obj[strArr2[i].split("=")[0]] = strArr2[i].split("=")[1];
}
console.log(obj);//{username: "xiaowang", password: "12345", age: "18", sex: "女", score: "90"}
// var str = 'username=xiaowang&password=12345&age=18&sex=女&score=90'
function queryString(str) {
var obj = {};
var strArr2 = str.split("&");
for (var i = 0; i < strArr2.length; i++) {
obj [ strArr2[i].split("=")[0] ] = strArr2[i].split("=")[1];
}
return obj;
}
</script>
</body>
</html>
对象转字符串
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>将对象转换成字符串</title>
</head>
<body>
<script>
// 已知我们得到的对象是:{username: "xiaowang", password: "12345", age: "18", sex: "女", score: "90"}
// 已知被拼接的url地址是:http://www.baidu.com
// 最终得到:http://www.baidu.com?username=xiaowang&password=12345&age=18&sex=女&score=90
var obj = {username: "xiaowang", password: "12345", age: "18", sex: "女", score: "90"};
var url = "http://www.baidu.com";
// 第一个目标:["username=xiaowang", "password=12345", "age=18", "sex=女", "score=90"]
var arr = [];
for(var i in obj){
var str = i + "=" + obj[i];
// console.log(str);//username=xiaowang
arr.push(str);
}
// console.log(arr); //["username=xiaowang", "password=12345", "age=18", "sex=女", "score=90"]
// 第二个目标:username=xiaowang&password=12345&age=18&sex=女&score=90
var newStr = arr.join("&");
console.log(newStr);
var newUrl = url + "?" + newStr;
console.log(newUrl);
</script>
</body>
</html>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构