JavaScript各种基础对象:(4)包装对象之String对象

2024-06-22 17:58

本文主要是介绍JavaScript各种基础对象:(4)包装对象之String对象,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1 String对象概述

2 实例对象的属性和方法

2.1 length属性

2.2 String.fromCharCode()

2.3 charAt 和 charCodeAt 方法

2.4 concat方法

2.5 substring方法,substr方法和slice方法

2.5.1 substring方法

2.5.2  substr方法

2.5.3 slice方法

2.5.4 总结:第一个参数的含义

2.5.5 总结:第二个参数的含义

2.5.6 总结:负的参数

2.6 indexOf 和 lastIndexOf 方法

2.7 trim 方法

2.8 toLowerCase 和 toUpperCase 方法

2.9 localeCompare方法

2.10 搜索和替换

2.10.1 match方法

2.10.2 search方法

2.10.3 replace方法

2.10.4 split方法


1 String对象概述

String对象是JavaScript原生提供的三个包装对象之一,用来生成字符串的包装对象实例。

var s = new String("abc");typeof s // "object"
s.valueOf() // "abc"

上面代码生成的变量s,就是String对象的实例,类型为对象,值为原来的字符串。实际上,String对象的实例是一个类似数组的对象。

new String("abc")
// String {0: "a", 1: "b", 2: "c"}

除了用作构造函数,String还可以当作工具方法使用,将任意类型的值转为字符串。

String(true) // "true"
String(5) // "5"

上面代码将布尔值ture和数值5,分别转换为字符串。

2 实例对象的属性和方法

2.1 length属性

该属性返回字符串的长度。

"abc".length
// 3

2.2 String.fromCharCode()

String对象直接提供的方法,主要是fromCharCode()。该方法根据Unicode编码,生成一个字符串。

String.fromCharCode(104, 101, 108, 108, 111)
// "hello"

注意,该方法不支持编号大于0xFFFF的字符。

String.fromCharCode(0x20BB7)
// "ஷ"

上面代码返回字符的编号是0x0BB7,而不是0x20BB7。这种情况下,只能使用四字节的UTF-16编号,得到正确结果。

String.fromCharCode(0xD842, 0xDFB7)
// "?"

2.3 charAt 和 charCodeAt 方法

charAt方法返回一个字符串的给定位置的字符,位置从0开始编号。

var s = new String("abc");s.charAt(1) // "b"
s.charAt(s.length-1) // "c"

这个方法完全可以用数组下标替代。

"abc"[1] // "b"

charCodeAt方法返回给定位置字符的Unicode编码(十进制表示)。

var s = new String("abc");s.charCodeAt(1)
// 98

需要注意的是,charCodeAt方法返回的Unicode编码不大于65536(0xFFFF),也就是说,只返回两个字节。因此如果遇到Unicode大于65536的字符(根据UTF-16的编码规则,第一个字节在U+D800到U+DBFF之间),就必需连续使用两次charCodeAt,不仅读入charCodeAt(i),还要读入charCodeAt(i+1),将两个16字节放在一起,才能得到准确的字符。

如果给定位置为负数,或大于等于字符串的长度,则这两个方法返回NaN。

2.4 concat方法

concat方法用于连接两个字符串。

var s1 = "abc";
var s2 = "def";s1.concat(s2) // "abcdef"
s1 // "abc"

使用该方法后,原字符串不受影响,返回一个新字符串。

该方法可以接受多个字符串。

"a".concat("b","c")
// "abc"

但是,一般来说,字符串连接运算还是应该使用加号(+)运算符。

2.5 substring方法,substr方法和slice方法

这三个方法都用来返回一个字符串的子串,而不会改变原字符串。它们都可以接受一个或两个参数,区别只是参数含义的不同。

2.5.1 substring方法

substring方法的第一个参数表示子字符串的开始位置,第二个位置表示结束结果。因此,第二个参数应该大于第一个参数。如果出现第一个参数大于第二个参数的情况,substring方法会自动更换两个参数的位置

var a = 'The Three Musketeers';
a.substring(4, 9) // 'Three'
a.substring(9, 4) // 'Three'

上面代码中,调换substring方法的两个参数,都得到同样的结果。

2.5.2  substr方法

substr方法的第一个参数是子字符串的开始位置,第二个参数是子字符串的长度

var b = 'The Three Musketeers';
b.substr(4, 9) // 'Three Mus'
b.substr(9, 4) // ' Mus'

2.5.3 slice方法

slice方法的第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置。与substring方法不同的是,如果第一个参数大于第二个参数,slice方法并不会自动调换参数位置,而是返回一个空字符串。

var c = 'The Three Musketeers';
c.slice(4, 9) // 'Three'
c.slice(9, 4) // ''

2.5.4 总结:第一个参数的含义

对这三个方法来说,第一个参数都是子字符串的开始位置,如果省略第二个参数,则表示子字符串一直持续到原字符串结束

"Hello World".slice(3)
// "lo World""Hello World".substr(3)
// "lo World""Hello World".substring(3)
// "lo World"

2.5.5 总结:第二个参数的含义

如果提供第二个参数,对于slice和substring方法,表示子字符串的结束位置;对于substr,表示子字符串的长度

"Hello World".slice(3,7)
// "lo W""Hello World".substring(3,7)
// "lo W""Hello World".substr(3,7)
// "lo Worl"

2.5.6 总结:负的参数

如果参数为负,对于slice方法,表示字符位置从尾部开始计算

"Hello World".slice(-3)
// "rld""Hello World".slice(4,-3)
// "o Wo"

对于substring方法,会自动将负数转为0

"Hello World".substring(-3)
// "Hello World""Hello World".substring(4,-3)
// "Hell"

对于substr方法,负数出现在第一个参数,表示从尾部开始计算的字符位置;负数出现在第二个参数,将被转为0

"Hello World".substr(-3)
// "rld""Hello World".substr(4,-3)
// ""

2.6 indexOf 和 lastIndexOf 方法

这两个方法用于确定一个字符串在另一个字符串中的位置,如果返回-1,就表示不匹配。两者的区别在于,indexOf从字符串头部开始匹配,lastIndexOf从尾部开始匹配。

"hello world".indexOf("o")
// 4"hello world".lastIndexOf("o")
// 7

它们还可以接受第二个参数,对于indexOf,表示从该位置开始向后匹配;对于lastIndexOf,表示从该位置起向前匹配

"hello world".indexOf("o", 6)
// 7"hello world".lastIndexOf("o", 6)
// 4

2.7 trim 方法

该方法用于去除字符串两端的空格

"  hello world  ".trim()
// "hello world"

该方法返回一个新字符串,不改变原字符串。

2.8 toLowerCase 和 toUpperCase 方法

toLowerCase用于将一个字符串转为小写,toUpperCase则是转为大写

"Hello World".toLowerCase()
// "hello world""Hello World".toUpperCase()
// "HELLO WORLD"

2.9 localeCompare方法

该方法用于比较两个字符串。它返回一个数字,如果小于0,表示第一个字符串小于第二个字符串;如果等于0,表示两者相等;如果大于0,表示第一个字符串大于第二个字符串

'apple'.localeCompare('banana')
// -1'apple'.localeCompare('apple')
// 0

2.10 搜索和替换

与搜索和替换相关的有4个方法,它们都允许使用正则表达式。

  • match:用于确定原字符串是否匹配某个子字符串,返回匹配的子字符串数组。
  • search:等同于match,但是返回值不一样。
  • replace:用于替换匹配的字符串。
  • split:将字符串按照给定规则分割,返回一个由分割出来的各部分组成的新数组。

2.10.1 match方法

match方法返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配,则返回null。返回数组还有index属性和input属性,分别表示匹配字符串开始的位置(从0开始)和原始字符串。

var matches = "cat, bat, sat, fat".match("at");matches // ["at"]
matches.index // 1
matches.input // "cat, bat, sat, fat"

2.10.2 search方法

search方法的用法等同于match,但是返回值为匹配的第一个位置。如果没有找到匹配,则返回-1

"cat, bat, sat, fat".search("at")
// 1

2.10.3 replace方法

replace方法用于替换匹配的子字符串,一般情况下只替换第一个匹配(除非使用带有g修饰符的正则表达式)

"aaa".replace("a", "b")
// "baa"

2.10.4 split方法

split方法按照给定规则分割字符串,返回一个由分割出来的各部分组成的新数组

"a|b|c".split("|")
// ["a", "b", "c"]

如果分割规则为空字符串,则返回数组的成员是原字符串的每一个字符

"a|b|c".split("")
// ["a", "|", "b", "|", "c"]

如果省略分割规则,则返回数组的唯一成员就是原字符串

"a|b|c".split()
// ["a|b|c"]

如果满足分割规则的两个部分紧邻着(即中间没有其他字符),则返回数组之中会有一个空字符串

"a||c".split("|")
// ["a", "", "c"]

如果满足分割规则的部分处于字符串的开头或结尾(即它的前面或后面没有其他字符),则返回数组的第一个或最后一个成员是一个空字符串

"|b|c".split("|")
// ["", "b", "c"]"a|b|".split("|")
// ["a", "b", ""]

split方法还可以接受第二个参数限定返回数组的最大成员数

"a|b|c".split("|", 0) // []
"a|b|c".split("|", 1) // ["a"]
"a|b|c".split("|", 2) // ["a", "b"]
"a|b|c".split("|", 3) // ["a", "b", "c"]
"a|b|c".split("|", 4) // ["a", "b", "c"]

 

这篇关于JavaScript各种基础对象:(4)包装对象之String对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1085005

相关文章

Spring核心思想之浅谈IoC容器与依赖倒置(DI)

《Spring核心思想之浅谈IoC容器与依赖倒置(DI)》文章介绍了Spring的IoC和DI机制,以及MyBatis的动态代理,通过注解和反射,Spring能够自动管理对象的创建和依赖注入,而MyB... 目录一、控制反转 IoC二、依赖倒置 DI1. 详细概念2. Spring 中 DI 的实现原理三、

SpringBoot 整合 Grizzly的过程

《SpringBoot整合Grizzly的过程》Grizzly是一个高性能的、异步的、非阻塞的HTTP服务器框架,它可以与SpringBoot一起提供比传统的Tomcat或Jet... 目录为什么选择 Grizzly?Spring Boot + Grizzly 整合的优势添加依赖自定义 Grizzly 作为

Java后端接口中提取请求头中的Cookie和Token的方法

《Java后端接口中提取请求头中的Cookie和Token的方法》在现代Web开发中,HTTP请求头(Header)是客户端与服务器之间传递信息的重要方式之一,本文将详细介绍如何在Java后端(以Sp... 目录引言1. 背景1.1 什么是 HTTP 请求头?1.2 为什么需要提取请求头?2. 使用 Spr

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

java Stream操作转换方法

《javaStream操作转换方法》文章总结了Java8中流(Stream)API的多种常用方法,包括创建流、过滤、遍历、分组、排序、去重、查找、匹配、转换、归约、打印日志、最大最小值、统计、连接、... 目录流创建1、list 转 map2、filter()过滤3、foreach遍历4、groupingB

SpringBoot如何使用TraceId日志链路追踪

《SpringBoot如何使用TraceId日志链路追踪》文章介绍了如何使用TraceId进行日志链路追踪,通过在日志中添加TraceId关键字,可以将同一次业务调用链上的日志串起来,本文通过实例代码... 目录项目场景:实现步骤1、pom.XML 依赖2、整合logback,打印日志,logback-sp

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

用Java打造简易计算器的实现步骤

《用Java打造简易计算器的实现步骤》:本文主要介绍如何设计和实现一个简单的Java命令行计算器程序,该程序能够执行基本的数学运算(加、减、乘、除),文中通过代码介绍的非常详细,需要的朋友可以参考... 目录目标:一、项目概述与功能规划二、代码实现步骤三、测试与优化四、总结与收获总结目标:简单计算器,设计

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne