JavaScript 笔记之字符串

目录

一、字符串基础

1、格式写法

     特殊字符

     长代码行换行

     字符串对象

2、字符串长度

二、字符串方法

1、indexOf(subStr, [startPos]) 查找子串位置

     lastIndexOf(subStr, [startPos]) 反向查找子串位置

2、search(regex|subStr) 正则搜索,返回位置

3、slice(startPos[, endPos]) 、substring(同前)、substr(startPos[, length]) 截取子串

4、replace(regex|subStr, anotherSubStr) 正则替换子串

5、toUpperCase()、toLowerCase() 大小写转换

6、concat(str1[, str2, ...]) 连接字符串

7、trim() 清除两头空格

8、charAt(pos)、charCodeAt(pos) 提取字符

     使用下标 [ ] 访问


一、字符串基础

1、格式写法

JavaScript 字符串是引号中的零个或多个字符。示例如下: 

var answer = "It's good to see you again!";
var answer = "He is called 'Bill'";
var answer = 'He is called "Bill"';
var x = "中国是瓷器的故乡,因此 china 与\"China(中国)\"同名。"

    特殊字符

代码结果描述
\''单引号
\""双引号
\\\反斜杠
\b退格键 
\f换页换页
\n新行新行
\r回车回车
\t水平制表符水平制表符
\v垂直制表符垂直制表符

     长代码行换行

document.getElementById("demo").innerHTML = "Hello \
Kitty!"; //某些浏览器也不允许 \ 字符之后的空格
document.getElementById("demo").innerHTML = "Hello" + 
"Kitty!"; //更靠谱的做法

     字符串对象

之前,是通过字面方式创建字符串原始值,也可以new Sting("...")创建字符串对象。

请不要把字符串创建为对象,它会拖慢执行速度。new 关键字使代码复杂化。也可能产生一些意想不到的结果:

var x = "Bill";
var y = new String("Bill");
// typeof x 将返回 string
// typeof y 将返回 object
// (x == y) 为 true,因为 x 和 y 的值相等
// (x === y) 为 false,因为 x 和 y 的类型不同(字符串与对象)

var x = new String("Bill");             
var y = new String("Bill");

// (x == y) 为 false,因为 x 和 y 是不同的对象

2、字符串长度

var txt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var sz = txt.length; // 26

二、字符串方法

1、indexOf(subStr, [startPos]) 查找子串位置

var str = "The full name of China is the People's Republic of China.";
var pos = str.indexOf("China"); // 17

     lastIndexOf(subStr, [startPos]) 反向查找子串位置

var str = "The full name of China is the People's Republic of China.";
var pos = str.lastIndexOf("China"); // 51 方法返回指定文本在字符串中最后一次出现的索引:

如果未找到文本, indexOf() 和 lastIndexOf() 均返回 -1。

2、search(regex|subStr) 正则搜索,返回位置

var str="Mr. Blue has a blue house";
subStr1 = str.search("blue");  // 15
subStr2 = str.search(/blue/i); // 4

3、slice(startPos[, endPos]) 、substring(同前)、substr(startPos[, length]) 截取子串

var str = "Apple, Banana, Mango";
var sub1  = str.slice(7,13);   //"Banana"
var sub2  = str.slice(-13,-7); //"Banana"
var left1 = str.slice(7);      //"Banana, Mango"
var left1 = str.slice(-13);    //"Banana, Mango"
//提示:负值位置不适用 Internet Explorer 8 及其更早版本
/* substring() 类似于 slice()
   不同之处在于 substring() 无法接受负的索引

   substr() 类似于 slice()
   不同之处在于 第二个参数规定被提取部分的长度
   如果省略第二个参数,则该 substr() 将裁剪字符串的剩余部分
   如果首个参数为负,则从字符串的结尾计算位置。
*/

var res1 = str.substr(7);  //"Banana, Mango"
var res2 = str.substr(-5); //"Mango"

4、replace(regex|subStr, anotherSubStr) 正则替换子串

var str = "Please visit Microsoft and Microsoft!";
var n = str.replace("Microsoft", "W3School"); //"Please visit W3School and Microsoft!" 默认只替换第一个

str = "Please visit Microsoft!";
var n = str.replace("MICROSOFT", "W3School"); //"Please visit Microsoft!" 默认大小写敏感

str = "Please visit Microsoft!";
var n = str.replace(/MICROSOFT/i, "W3School"); //"Please visit W3School!" 大小写不敏感

str = "Please visit Microsoft and Microsoft!";
var n = str.replace(/Microsoft/g, "W3School"); //"Please visit W3School and W3School!" 替换所有

5、toUpperCase()、toLowerCase() 大小写转换

var text1 = "Hello World!";   // 字符串
text2 = text1.toUpperCase();  // "HELLO WORLD!"
text3 = text1.toLowerCase();  // "hello world!"

6、concat(str1[, str2, ...]) 连接字符串

var text = "Hello" + " " + "World!";
var text = "Hello".concat(" ","World!"); //两者等效

7、trim() 清除两头空格

/*警告:Internet Explorer 8 或更低版本不支持 trim() 方法。*/
var str = "       Hello World!        ";
alert(str.trim());

/*如需支持 IE 8,您可搭配正则表达式使用 replace() 方法代替:*/
var str = "       Hello World!        ";
alert(str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''));

/* 您还可以使用上面的 replace 方案把 trim 函数添加到 JavaScript String.prototype:*/
if (!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
var str = "       Hello World!        ";
alert(str.trim());

8、charAt(pos)、charCodeAt(pos) 提取字符

var str = "HELLO WORLD";
str.charAt(0);             // 返回 H

str.charCodeAt(0);         // 返回 72 字符 H 的 unicode 编码

     使用下标 [ ] 访问

  • 不适用 Internet Explorer 7 或更早的版本
  • 它让字符串看起来像是数组(其实并不是)
  • 如果找不到字符,[ ] 返回 undefined,而 charAt() 返回空字符串
  • 它是只读的。str[0] = "A" 不会产生错误(但也不会工作!)
var str = "HELLO WORLD";
str[0];                   // 返回 H
str[0] = "A";             // 不产生错误,但不会工作
typeof str[100] == 'undefined'; // true
str.charAt(100) == '';          // true

9、转换为数组

var txt = "a,b,c,d,e";   // 字符串
txt.split(",");          // 用逗号分隔 ["a", "b", "c", "d", "e"]

var txt = "a b c d e";   // 字符串
txt.split(" ");          // 用空格分隔 ["a", "b", "c", "d", "e"]

var txt = "a|b|c|d|e";   // 字符串
txt.split("|");          // 用竖线分隔 ["a", "b", "c", "d", "e"]

txt.split("");           // 分隔为字符 ["a", ",", "b", ",", "c", ",", "d", ",", "e"]

txt.split();             // 分隔失败 ["a,b,c,d,e"]

 

参考:https://www.w3school.com.cn/js/js_strings.asp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值