【JavaScript】【语法】字符串String

95 阅读5分钟

一、String介绍

  • 作用:JavaScript 字符串用于存储和处理文本

  • 用法

    • 可以使用单引号或多引号 示例:
    var str = 'string';
    var str = "string";
    
    • 访问字符串中的字符方式:使用索引位置 示例:
    var str = "string";
    var strChar = str[0]; // 's'
    var strChar = str[2]; // 'r'
    
    • 可以在字符串中使用引号,但是字符串中的引号不要与字符串的引号相同 示例:
    var answer = "It's alright";
    var answer = "He is called 'Johnny'";
    var answer = 'He is called "Johnny"';
    
    • 可以在字符串中添加转义字符来使用引号

    字符串中可以使用转义字符转义的特殊字符:

    • ' : 单引号
    • " : 双引号
    • \ : 反斜杠
    • \n : 换行
    • \r : 回车
    • \t : tab,制表符
    • \b : 退格符
    • \f : 换页符

    示例:

    var x = 'It\'s alright';
    var y = "He is called \"Johnny\"";
    

1.1 字符串长度

可以使用内置属性 length 来计算字符串的长度:

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sln = txt.length;

1.2 字符串可以是对象

  • 可以使用字符创建:var str = "string"

  • 可以使用 new 关键字将字符串定义为一个对象:var str = new String("string")

    缺点:会拖慢执行速度,并可能产生其他副作用

示例:

var x = "John";
var y = new String("John");
typeof x // 返回 String
typeof y // 返回 Object
x === y // false

注意点:

  • 原始值字符串,如 "John", 没有属性和方法(因为他们不是对象)。
  • 原始值可以使用 JavaScript 的属性和方法,因为 JavaScript 在执行方法和属性时可以把原始值当作对象。

二、字符串属性

2.1 constructor

返回创建字符串属性的函数

2.2 length

返回字符串的长度

示例:

var str = "ABCDEF";
str.length // 6

2.3 prototype

允许向对象添加属性和方法

三、字符串方法

3.1 charAt()

作用:返回指定索引位置的字符

语法string.charAt(index)

参数值

  • index:必需。表示字符串中某个位置的数字,即字符在字符串中的位置

返回值:String。返回在指定位置的字符

示例:

var str = "ABCDEF";
str.charAt(0) // A
str.charAt(1) // B
str.charAt(str.length - 1) // F。返回字符串中的最后一个字符

3.2 charCodeAt()

作用:返回在指定的位置的字符的 Unicode 编码。

语法string.charCodeAt(index)

参数值

  • index: 必需。表示字符串中某个位置的数字,即字符在字符串中的下标。

返回值:Number。返回在指定的位置的字符的 Unicode 编码。返回值是 0 - 65535 之间的整数,表示给定索引处的 UTF-16 代码单元。

示例:

var str = "HELLO WORLD";
var n = str.charCodeAt(0); // 72
// 返回字符串中最后一个字符的 Unicode 编码:
var n = str.charCodeAt(str.length-1); // 68

3.3 split()

作用:把字符串分割为字符串数组。

语法string.split(separator,limit)

参数值

  • separator: 可选。字符串或正则表达式,从该参数指定的地方分割 string Object。
  • limit: 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

返回值:Array。一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 string Object 分割成子串创建的。返回的数组中的字串不包括 separator 自身。

注意点:

  • split() 只会返回新数组,不会改变原始字符串

示例:

var str="How are you doing today?";
var n=str.split(" "); // [How,are,you,doing,today?]

// 省略分割参数:
var str="How are you doing today?";
var n=str.split(); // ['How are you doing today?']

// 分割每个字符,包括空格:
var str="How are you doing today?";
var arr = str.split(""); // ['H', 'o', 'w', ' ', 'a', 'r', 'e', ' ', 'y', 'o', 'u', ' ', 'd', 'o', 'i', 'n', 'g', ' ', 't', 'o', 'd', 'a', 'y', '?']

// 使用 limit 参数:
var str="How are you doing today?";
var n=str.split(" ",3); // ['How', 'are', 'you']

// 使用字符作为分隔符
var str="How are you doing today?";
var n=str.split("o"); //  ['H', 'w are y', 'u d', 'ing t', 'day?']

3.4 concat()

作用:连接两个或更多字符串,并返回新的字符串。

语法string.concat(string1, string2, ..., stringX)

参数值

  • string1, string2, ..., stringX: string1, string2, ..., stringX

返回值:String。两个或多个字符串连接后生成的新字符串。

示例:

// 连接两个字符串
var str1 = "Hello ";
var str2 = "world!";
var n = str1.concat(str2);  // Hello world!

// 连接三个字符串
var str1="Hello ";
var str2="world!";
var str3=" Have a nice day!";
var n = str1.concat(str2,str3); // Hello world! Have a nice day!

3.5 substr()

作用:从起始索引号提取字符串中指定数目的字符。

语法string.substr(start,length)

参数值

  • start: 必需。要抽取的子串的起始下标。必须是数值。如果是负数,那么该参数声明从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
  • length: 可选。子串中的字符数。必须是数值。如果省略了该参数,那么返回从 stringObject 的开始位置到结尾的字串。

返回值:String。返回一个新的字符串

注意点:不会改变原始字符串

示例:

// 传length
var str="Hello world!";
var n=str.substr(2,3); // llo

// 不传length
var str="Hello world!";
var n=str.substr(2) // llo world!

3.6 substring()

作用:提取字符串中两个指定的索引号之间的字符。

语法string.substring(from, to)

参数值

  • from: 必需。一个非负的整数,规定要提取的子串的第一个字符在 string Object 中的位置。
  • to: 可选。一个非负的整数,比要提取的子串的最后一个字符在 string Object 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。

返回值

注意点:

  • substring() 方法返回的子串包括 开始 处的字符,但不包括 结束 处的字符。

示例:

var str="Hello world!";
str.substring(3,7) // 'lo w'
str.substring(3) // 'lo world!'

3.7 trim()

作用:去除字符串两边的空白。

空白符包括:空格、制表符 tab、换行符等其他空白符等。

语法string.trim()

返回值:String。返回移除头尾空格的字符串。

注意点:

  • trim() 方法不会改变原始字符串
  • trim() 方法不适用于 null, undefined, Number 类型。

拓展:如果你的浏览器不支持 trim() 方法,你可以使用正则表达式来实现:

function myTrim(x) {
  return x.replace(/^\s+|\s+$/gm,'');
}

function myFunction() {
  var str = myTrim("        Runoob        ");
  alert(str);
}

示例:

var str = "       Runoob        ";
alert(str.trim()); // Runoob

...