JavaScript — 数据类型之 String字符串

2022/1/23 22:05:24

本文主要是介绍JavaScript — 数据类型之 String字符串,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

数据类型指的就是字面量的类型

JavaScript 中有八种基本的数据类型(前七种为基本数据类型,也称为原始类型,而 object 为复杂数据类型)。

  • number用于任何类型的数字:整数或浮点数,在 ±(253-1) 范围内的整数。
  • bigint 用于任意长度的整数。
  • string 用于字符串:一个字符串可以包含 0 个或多个字符,所以没有单独的单字符类型。
  • boolean 用于 true 和 false
  • null 用于未知的值 —— 只有一个 null 值的独立类型。
  • undefined 用于未定义的值 —— 只有一个 undefined 值的独立类型。
  • symbol 用于唯一的标识符。
  • object 用于更复杂的数据结构。

String字符串

  1.引号

        在JS中字符串需要使用引号引起来,同样的引号不能嵌套(双引号不能直接嵌套双引号)

        在 JavaScript 中,有三种包含字符串的方式。

  1. 双引号:" Hello "
  2. 单引号:' Hello '
  3. 反引号:` Hello `

        双引号和单引号都是简单引用,在 JavaScript 中两者几乎没有什么差别。

 

        反引号是 功能扩展 引号。它们允许我们通过将变量和表达式包装在 ${...} 中,来将它们嵌入到字符串中。例如:

let name = "John";

// 嵌入一个变量
alert( `Hello, ${name}!` ); // Hello, John!

// 嵌入一个表达式
alert( `the result is ${1 + 2}` ); // the result is 3

        ${...} 内的表达式会被计算,计算结果会成为字符串的一部分。可以在 ${...} 内放置任何东西:变量,或者算数表达式,或者其他一些更复杂的内容。

        另外,反引号允许字符串跨行:(单引号和双引号则不可以)

let nameList = `Names:
 * Tom
 * Tony
 * Mary
`;
alert(nameList); // 多行的名单

 

 

  2.转义字符 

在字符串中我们可以使用 \ 作为转义字符,当表示一些特殊符号时可以使用 \ 进行转义

例如:

let nameList = "Names:\n Tom\n Tony\n Mary";

alert(nameList); // 一个多行的名单

 

转义字符
符号表示含义
\n换行
\r回车:不单独使用。Windows文本文件使用两个字符\r\n的组合来表示换行
\' , \"引号
\\反斜线
\t制表符
\b, \f, \v退格、换页、垂直标签——为了兼容性,现在已经不使用
\xXX具有给定十六进制 Unicode XX 的 Unicode 字符,例如:'\x7A' 和 'z' 相同。
\uXXXX以 UTF-16 编码的十六进制代码 XXXX 的 unicode 字符,例如 \u00A9 —— 是版权符号 © 的 unicode。它必须正好是 4 个十六进制数字。
\u{X...XXXXXX}具有给定 UTF-32 编码的 unicode 符号。一些罕见的字符用两个 unicode 符号编码,占用 4 个字节。这样我们就可以插入长代码了。

 

  3.字符串长度

        length 属性表示字符串长度

举个例子:

alert( `My\n`.length ); // 3

        \n 是一个单独的“特殊”字符,所以长度是3。

查看字符串长度可以调用 str.length 属性

  4.访问字符 

        要获取在 pos 位置的一个字符,可以使用方括号 [ pos ] 或者调用 str.charAt(pos) 方法。第一个字符从零位置开始:

let str = `Hello`;

// 第一个字符
alert( str[0] ); // H
alert( str.charAt(0) ); // H

// 最后一个字符
alert( str[str.length - 1] ); // o

        如果没有找到字符,[]返回 undefined,而 charAt 返回一个空字符串

 

        另外,可以使用 for...of 遍历字符 :

for (let char of "Hello") {
  console.log(char);
}

         字符串中的单个字符是不可以被直接更改的!!!

  5. 改变大小写

        可以使用 toLowerCase() toUpperCase() 的方法来改变大小写

举个例子:

alert( 'Interface'.toUpperCase() ); // INTERFACE
alert( 'Interface'.toLowerCase() ); // interface

        也可以使字符串中的一个字符改变大小写

再举个例子:

alert( 'Interface'[0].toLowerCase() ); // 'i'

  6.查找子字符串 

        (1).str.indexOf()

 str.indexOf(substr,pos)

它从给定位置 pos 开始,在 str 中查找  substr,如果没有找到,则返回 -1,否则返回匹配成功的位置。

let str = 'Widget with id';

alert( str.indexOf('Widget') ); // 0,因为 'Widget' 一开始就被找到
alert( str.indexOf('widget') ); // -1,没有找到,检索是大小写敏感的

alert( str.indexOf("id") ); // 1,"id" 在位置 1 处(……idget 和 id)

可选的第二个参数 "pos" 允许我们从给定的起始位置开始检索。

例如,“id” 第一次出现的位置是 1。查询下一个存在位置时,我们从 2 开始检索:

let str = 'Widget with id';

alert( str.indexOf('id', 2) ) // 12

还有一个类似的方法 str.lastIndexOf(substr,pos) ,它从字符串的末尾开始搜索到开头

它会以相反的顺序列出这些事件。

        (2).includes、startsWith、endsWith

        str.includes(substr,pos) 根据 str 中是否包含 substr 来返回 true/false。

        如果需要检测匹配,但不需要它的位置,那么就可以选择这种方法

举个例子:

alert( "Widget with id".includes("Widget") ); // true
alert( "Hello".includes("Bye") ); // false

 

        str.includes 的第二个可选参数是开始搜索的起始位置

再举个例子:

alert( "Midget".includes("id") ); // true
alert( "Midget".includes("id", 3) ); // false, 从位置 3 开始没有 "id"

 

        方法 str.startsWith(substr)str.endsWith(substr) 表示字符串是否以substr开头或结尾

再再举个例子:

alert( "Widget".startsWith("Wid") ); // true,"Widget" 以 "Wid" 开始
alert( "Widget".endsWith("get") ); // true,"Widget" 以 "get" 结束

  7.获取子字符串

         (1).str.slice(start [, end])

        返回字符串从 start 到(但不包括)end 的部分

举个例子:

let str = "stringify";
alert( str.slice(0, 5) ); // 'strin',从 0 到 5 的子字符串(不包括 5)
alert( str.slice(0, 1) ); // 's',从 0 到 1,但不包括 1,所以只有在 0 处的字符

        如果没有第二个参数,slice 会一直运行到字符串末尾: 

let str = "stringify";
alert( str.slice(2) ); // 从第二个位置直到结束

        start / end 也有可能是负值。它们的意思是起始位置从字符串结尾计算: 

let str = "stringify";

// 从右边的第四个位置开始,在右边的第一个位置结束
alert( str.slice(-4, -1) ); // 'gif'

        (2). str.substring(start [, end])

        返回字符串在 start 和 end 之间的部分,与slice几乎相同,但它允许start大于end,而且不支持负的参数。

let str = "stringify";

// 这些对于 substring 是相同的
alert( str.substring(2, 6) ); // "ring"
alert( str.substring(6, 2) ); // "ring"

// ……但对 slice 是不同的:
alert( str.slice(2, 6) ); // "ring"(一样)
alert( str.slice(6, 2) ); // ""(空字符串)

        (3).str.substr(start [, length])

                返回字符串从 start 开始的给定 length 的部分。

        与以前的方法相比,这个允许我们指定 length 而不是结束位置:

let str = "stringify";
alert( str.substr(2, 4) ); // 'ring',从位置 2 开始,获取 4 个字符

        第一个参数可能是负数,从结尾算起: 

let str = "stringify";
alert( str.substr(-4, 2) ); // 'gi',从第 4 位获取 2 个字符

 

 两种字符串函数:

  • str.trim() —— 删除字符串前后的空格 (“trims”)。
  • str.repeat(n) —— 重复字符串 n 次。


这篇关于JavaScript — 数据类型之 String字符串的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程