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

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

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

查找字符串:

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

属性返回字符串的长度

  var str = "abcdef"
  var strLen = str.length  // 6

  
  
  • 1
  • 2
二、 indexOf( ): 查找字符串中的字符串

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

  var str = "abcdef"
  var strLen = str.indexOf('d')  // 3

  
  
  • 1
  • 2
三、lastIndexOf(): 查找字符串中的字符串

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

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

  
  
  • 1
  • 2

注意:

  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

  
  
  • 1
  • 2
  • 3
四、 search( ):检索字符串中的字符串

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

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

  
  
  • 1
  • 2

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

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

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

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

slice(start, end)

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

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

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

  
  
  • 1
  • 2

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

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

  
  
  • 1
  • 2

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

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

  
  
  • 1
  • 2
  • 3
  • 4

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

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

substring(start, end)

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

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

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

  
  
  • 1
  • 2

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

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

  
  
  • 1
  • 2
三、 substr(): 类似于slice(),区别是第二个参数不同

substr(start, length)

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

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

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

  
  
  • 1
  • 2

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

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

  
  
  • 1
  • 2

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

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

  
  
  • 1
  • 2

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

替换字符串内容

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

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

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

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

  
  
  • 1
  • 2

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

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

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

  
  
  • 1
  • 2
  • 3
  • 4

转换为大小写

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

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

  
  
  • 1
  • 2

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

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

  
  
  • 1
  • 2

连接两个或多个字符串

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

  
  
  • 1
  • 2
  • 3
  • 4
  • 5

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

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

  
  
  • 1
  • 2

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

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

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

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

  
  
  • 1
  • 2

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

提取字符串字符

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

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

  
  
  • 1
  • 2

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

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

  
  
  • 1
  • 2

属性访问

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

  
  
  • 1
  • 2
  • 3
  • 4

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

  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

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如果忽略分隔符,被返回的数组将包含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>

  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

猜你喜欢

转载自www.cnblogs.com/lonelyxmas/p/12963257.html
今日推荐