javascript字符串方法:查找、截取、替换、转换大小写、连接、去空格、提取、转换为数组

今天整理一下字符串的方法和属性,为了方便看,我把它分成了几个部分:

查找字符串:

序号方法描述
1length属性返回字符串的长度
2indexOf()属性返回字符串中指定文本首次出现的索引(位置)
3lastIndexOf()属性返回字符串中指定文本最后一次出现的索引(位置)
4search()属性返回字符串中特定值的字符串的首次 出现的索引(位置)
一、 length: 字符串的长度

属性返回字符串的长度

  var str = "abcdef"
  var strLen = str.length  // 6
二、 indexOf( ): 查找字符串中的字符串

属性返回字符串中指定文本首次出现的索引(位置)

  var str = "abcdef"
  var strLen = str.indexOf('d')  // 3
三、lastIndexOf(): 查找字符串中的字符串

属性返回字符串中指定文本最后一次出现的索引(位置)

  var str = "abcadef"
  var strLen = str.lastIndexOf('a')  // 3

注意:

  1. 如果未找到文本,indexOf()lastIndexOf() 均返回 -1
  2. 两种方法都接受作为检索起始位置的第二个参数:
  3. lastIndexOf() 方法是向后进行检索的(从后往前),如例子中的第二个参数是6,则是从索引为6的地方开始向前检索直到字符串的起点。
  var str = "abcadef"
  var strLen = str.IndexOf('a', 2)  // 3
  var strLen2 = str.lastIndexOf('a', 6)  //3
四、 search( ):检索字符串中的字符串

属性返回字符串中指定字符串的首次出现的索引(位置)

  var str = "abcdedf"
  var strLen = str.search('de')  // 3

你注意到了没:
search()indexOf() ,是相等的,它俩的区别是:

  1. search() 方法无法设置第二个开始位置的参数
  2. indexOf() 方法无法设置更强大的搜索值(正则表达式)

截取字符串(提取部分字符串):

序号方法描述
1slice(start, end)提取字符串的某个部分并在新字符串中返回被提取的部分
2substring(start, end)提取字符串的某个部分并在新字符串中返回被提取的部分
3substr(start, length)提取字符串的某个部分并在新字符串中返回被提取的部分)
一、 slice(): 提取字符串的某个部分并在新字符串中返回被提取的部分

slice(start, end)

参数: 起始索引(开始位置),终止索引(结束位置)。

截取的结果包含开始位置,不包含终止位置。

  var str = "abcdef"
  var strLen = str.slice(2,5) // cde

如果参数为负数,则从字符串的末尾向前计算:

  var str = "abcdefjhigk"
  var strLen = str.slice(-5,-2) // jhi

如果省略第二个参数,则从起始的位置裁剪到字符串的结尾

  var str = "abcdef"
  var strLen = str.slice(2) // cdef
  // 或者负数,从结尾计算
  var strLen2 = str.slice(-3) // def

注意: 负数参数不能用于IE8及以前

二、 substring(): 类似于slice(),区别是不能设置负数索引

substring(start, end)

参数: 起始索引(开始位置),终止索引(结束位置)。

截取的结果包含开始位置,不包含终止位置。

  var str = "abcdef"
  var strLen = str.substring(2,5) // cde

如果省略第二个参数,则从起始的位置裁剪到字符串的结尾

  var str = "abcdef"
  var strLen = str.substring(2) // cdef
三、 substr(): 类似于slice(),区别是第二个参数不同

substr(start, length)

参数: 起始索引(开始位置),被提取的部分的长度

截取的结果包含开始位置。

  var str = "abcdefjhigk"
  var strLen = str.substr(1,5) // bcdef

如果省略第二个参数,则从起始的位置裁剪到字符串的结尾

  var str = "abcdef"
  var strLen = str.substr(2) // cdef

如果首个参数为负数,则从字符串的结尾计算位置

  var str = "abcdefjhigk"
  var strLen = str.substr(-2) // gk

注意: 第二个参数不能是负数,因为它定义的是长度。

替换字符串内容

replace() 方法不会改变调用它的字符串,返回的是新的字符串

参数: 字符串中即将被替换的文本,替换成的文本

该方法默认只替换首个匹配:

  var str = "hello world"
  var strx = str.replace("world","xiaomeizi") // hello xiaomeizi

注意: 该方法对大小写敏感,因此不会匹配到大写的”WORLD“

如果想执行大小写不敏感的替换需要使用正则表达式: /i(大小写不敏感 )

  var str = "HELLO world"
  // 注意:使用正则表达式时不需要带引号
  var strx = str.replace(/hello/i,"xiaomeizi") // xiaomeizi world
  

转换为大小写

**toUpperCase():**把字符串转换成大写

  var str = "hello world"
  var strx = str.toUpperCase() // HELLO WORLD

**toLowerCase():**把字符串转换成小写

  var str = "Hello World"
  var strx = str.toLowerCase() //hello world

连接两个或多个字符串

concat(): 连接两个或多个字符串
参数: 第一个参数是用什么连接,第二个是连接到谁,以此类推可连接多个

  var str1 = "Hello"
  var str2 = "World"
  var str3 = "xxx"
  var strx = str1.concat(" ",str2) //Hello World
  var stry = str1.concat(" ",str2," 123 ",str3) //Hello World 123 xxx

concat() 方法可用于代替加运算符,下面两行代码等效:

  var strx = "Hello" + " " + "World" //Hello World
  var stry = "Hello".concat(" ","World") //Hello World

注意: 所有字符串的方法都会返回新字符串。它们不会修改原始字符串。
正式的说:字符串是不可变的:字符串是不可变的,字符串不能更改,只能替换。

去空格:删除字符串两端的空白字符

trim() 去掉字符串两端的空格

  var str1 = "           Hello World           " 
  var stry = str1.trim() //Hello World

注意: IE8及更低版本不支持 trim() 方法。

提取字符串字符

charAt(position): 方法返回字符串中指定下标(位置)的字符串
参数: 指定下标(位置)

  var str1 = "Hello World" 
  var stry = str1.charAt(0) // 返回 H

charCodeAt(position): 方法返回字符串中指定下标(位置)的字符unicode编码
参数: 指定下标(位置)

  var str1 = "Hello World" 
  var stry = str1.charCodeAt(0) // 返回 72

属性访问

  var str1 = "Hello World" 
  var stry = str1[0] // 返回 H
  // 注意:不能给属性赋值
  str1[0] = "A"   // 不会报错,但是无效

注意: 使用属性访问有点不太靠谱:

  1. 不适合IE7或更早的版本
  2. 它让字符串看起来像是数组(其实并不是)
  3. 如果找不到字符,[ ] 返回 undefined, 而 charAt() 返回空字符串。
  4. 它是只读。str[0] = “A” 不会产生错误,但也不会执行。

如果希望用数组的方式处理字符串,可以先把它转换为数组

split(): 将字符串转换为数组:

  var str1 = "a,b,c,d,e,f" 
  var arr = str1.split(",") // 用逗号分隔
  // var arr = str1.split(" ") // 用空格分隔
  // var arr = str1.split("|") // 用竖线分隔
  arr[0]  //  返回 a
  arr[0] = "H"    // 可以接受赋值,当前 arr[0] 返回 H

如果忽略分隔符,被返回的数组将包含index[0]中的整个字符串
如果分隔符是""(空字符串),被返回的数组僵尸间隔单个字符的数组:

    <!DOCTYPE html>
	<html>
	<body>
	
		<h1>JavaScript 字符串方法</h1>
		
		<p id="demo"></p>
		<p id="demo2"></p>
		
		<script>
		var str1 = "abcdef" 
		var arr1 = str1.split() // 忽略分隔符
		var arr2 = str1.split("") // 用空字符串分隔
		var text1 = "";
		var text2 = "";
		var i;
		for (i = 0; i < arr1.length; i++) {
		  text1 += arr1[i] + "<br>"
		}
		document.getElementById("demo").innerHTML = text1;   // 返回abcdef
		
		for (i = 0; i < arr2.length; i++) {
		  text2 += arr2[i] + "<br>"
		}
		document.getElementById("demo2").innerHTML = text2;  
		// demo2 返回:
		//  a
		//  b
		//  c
		//  d
		//  e
		//  f
	</script>
	
	</body>
	</html>
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值