[JS专题1]----字符串

news/2024/6/30 22:04:41

总结:整理与字符串相关的知识点。
主要有
1.对字符串的查找,如是否有某些字符,字符在哪个位置,根据位置去查找字符
2.对字符串的删除,截取我们想要的字符,也可能是删除我们不想要的字符
3.对字符串的增加 固定格式的补全 自动补全 重复补全 拼接
4.对字符串的替换,对某些字符的全部替换 或者说仅对第一个出现的字符替换
5.转换 大小写的转换 转为码点 码点转字符
6.不同类型的转换;数字与字符串的转换 数组与字符串的转换
7.比较 比较大小 比较某些字符出现的位置顺序

0、字符串的方法大合集

含义方法返回值改变原字符串
查找indexOf()位置no
查找search()位置yes
查找includes()booleanno
查找startswith()头部有?booleanyes
查找endsWith() 尾部有?booleanyes
截取substr(start,length)新字符串no
截取substring(start,stop)新字符串no
截取slice(start,stop)新字符串no
去空格trim()**no
重复次数repeat(n)新字符串no
补全padStart(length,value) 头部补全新字符串no
补全padEnd(length,value)尾部补全新字符串no
匹配match()查找项+位置no
正则的全匹配matchAll()正则yes
替换replace()新字符串no
转小写toUpperCase()新字符串yes
转小写toLowerCase()新字符串yes
转码点charCodeAt()新字符no
转码点codePointAt()位置no
转字符charAt()新字符no
转字符at() 还未实现位置no
码点->字符String.fromCodePoint()新字符/
比较位置顺序localeCompare(a,b)1/-1/0no
**normalize()**no

图片描述

1.字符串的查找

如是否有某些字符,某个字符的位置是哪里? 第n 位的字符是什么

1.1 根据位置查找

  1. charAt(n) -----返回字符;只接收位置参数,位置参数过大时,返回空。参数非数字时,返回第一个字符
  2. 可通过str[n]的方式 -----返回字符---位置参数过大时,返回undefined
  3. charCodeAt(n) -----返回码点,es5
  4. codePointAt(n)-----返回码点,es6 ,优势,能识别大于oxFFFF的编码
var s = 'kljlk;juoi'
s.charAt(2) // j
s.charAt('j') // k
s.charAt('15') // ''
s[15] // undefined
s[3] // l
s.charCodeAt(2) //  106
s.codePointAt(2) // 106

1.2 是否有某些字符,根据字符查找

- indexOf()-------返回位置,没有就返回-1
- lastIndexOf();---返回位置,从后开始查找
- includes():返回布尔值,表示是否找到了参数字符串。第二个参数,表示开始搜索的位置
- startsWith():返回布尔值,表示参数字符串是否在原字符串的头部。第二个参数,表示开始搜索的位置
- endsWith():返回布尔值,表示参数字符串是否在原字符串的尾部第二个参数,表示开始搜索的位置 
- match()---返回相关的信息--只接受一个参数,要么正则表达式 要么RegExp对象
- search()----返回位置,没有就返回-1---只接受一个参数,要么正则表达式 要么RegExp对象
let s = 'Hello world!';

s.startsWith('world', 6) // true
s.endsWith('Hello', 5) // true
s.includes('Hello', 6) // false

var s1 = 'fdkfdkjldrm '
s1.indexOf('kjl') // 5
s1.lastIndexOf('kjl') // 5
s1.indexOf('fd') // 0
s1.lastIndexOf('fd') // 3
s1.search('fdlp') // -1
s1.search('fd') // 0
s1.search('kjl') // 5
s1.match('fd') // ["fd", index: 0, input: "fdkfdkjldrm ", groups: undefined]
s1.match('f5') // null

2.字符串的增删改

以下4种方法不会修改字符串本身;

2.1 删除

  • 2.1.2截取
    slice(start,stop)
    substring(start,stop)
    substr(start,length)

      **共同点:**
      基于字符串创建新字符串,不改变原有字符串
      第二个参数是可选的
      无第二个参数,即字符结尾为结束位置
      **不同点**
      对负数的处理:
      slice()---将负数和字符串长度相加
      substring()----将负数转为0
      substr()---将第一个负数和字符串长度相加。第二个负数转为0,即不截取
    

    图片描述
    图片描述

2.1.2 删除空格

    trim() 删除字符串中 前置和后置的空格
    

图片描述

2.2 增加

2.2.1 复制n遍字符串

repeat(n) --返回一个新字符串,表示将原字符串重复n次。
参数如果是小数,会被取整

'x'.repeat(3) // "xxx"
'hello'.repeat(2) // "hellohello"
'na'.repeat(0) // ""
'na'.repeat(2.9) // "nana"
'na'.repeat(Infinity)
// RangeError
'na'.repeat(-1)
// RangeError
参数NaN等同于 0

2.2.2.补全长度

padStart(minlength,string)用于头部补全,
padEnd(minlength,string)用于尾部补全
用途:

  • 提示字符串格式;
  • 为数值补全指定位数
'x'.padStart(5, 'ab') // 'ababx'
'x'.padStart(4, 'ab') // 'abax'
'x'.padEnd(5, 'ab') // 'xabab'
'x'.padEnd(4, 'ab') // 'xaba'
'xxx'.padStart(2, 'ab') // 'xxx'
'xxx'.padEnd(2, 'ab') // 'xxx'
'x'.padStart(4) // '   x'
'x'.padEnd(4) // 'x   '
'12'.padStart(10, 'YYYY-MM-DD') // "YYYY-MM-12"
'09-12'.padStart(10, 'YYYY-MM-DD') // "YYYY-09-12"

2.3 - 拼接 concat();

图片描述

2.4 修改

  • replace();

图片描述

3.字符串的转换

3.1 大小写的转换

- toLowerCase();-----小写
- toUpperCase();----变大写
- toLocaleLowerCase();
- toLocaleUpperCase();

3.2 码点 --> 字符

根据码点返回对应的字符

  • es5:String.fromCharCode(0x20BB7); 定义在String对象上
  • es6:String.fromCodePoint();定义在字符串的实例对象上。--能识别32位字符。即能识别Unicode编号大于oxFFFF;
String.fromCharCode(100)
"d"
String.fromCodePoint(0x20BB7)
// "?"
String.fromCodePoint(100,100,100)
// ddd

4.不同类型的转换

4.1 string 与 array

array.join(',') ------将数组转字符串
string.split(',') ---------字符串转数组

4.2 number与string

number --->string(4种)

1.Number()
2.parseInt()
3.parseFloat()
4.+string-----
var s = '23'
var k = +s
typeof k // number

number---> string(4种)

String(number)--强制转换
toString(8进制)
toFixed(n)---//数字转换为字符串,并且显示小数点后的指定的位数
number + ''
var s = 123.68
var k= s.tiString(8)
var k0 = s.toFixed(1)
var k1 = String(s)
k // '173.43656'
k0 // '123.7'
k1 // '123.68'

4.3 string 与 object

JSON.parse() ------ json 字符串 转 json 对象
JSON.stringify() -----json 对象转 json 字符串

5 .字符串的比较

localeCompare()---比较2个字符串,参数应该在比较的字符串前面,则返回1;后面,则 -1; 等于,则 0;

var s= 'dfhk'
s.localeCompare('fgfg') // -1
s.localeCompare('afgfg') // 1
s.localeCompare('dfhk') // 0
s.localeCompare('df') // 1

6.其他常用的方法

6.1字符串的遍历器接口

  • 字符串可以被for...of循环遍历。

    与es5的比较
    for循环虽可以遍历字符串,但不能识别大于oxFFFF的编码;

  • valueOf()
  • toLocaleString()

7.变态考题

1.

function showCase(value) {
    switch(value) {
    case 'A':
        console.log('Case A');
        break;
    case 'B':
        console.log('Case B');
        break;
    case undefined:
        console.log('undefined');
        break;
    default:
        console.log('Do not know!');
    }
}
showCase(new String('A'));
结果是 ‘'Do not know!’

2.

function showCase2(value) {
    switch(value) {
    case 'A':
        console.log('Case A');
        break;
    case 'B':
        console.log('Case B');
        break;
    case undefined:
        console.log('undefined');
        break;
    default:
        console.log('Do not know!');
    }
}
showCase2(String('A'));

结果是‘Case A’

3.

'5' + 3

'5' - 3

// 53 2; because:Strings know about + and will use it, but they are ignorant of - so in that case the strings get converted to numbers.

4.

3.toString()
3..toString()
3...toString()

// error  '3' error;because:1.1, 1., .1 都是合法的数字. 那么在解析 3.toString 的时候这个 . 到底是属于这个数字还是函数调用呢? 只能是数字, 因为3.合法啊!



http://www.niftyadmin.cn/n/4151908.html

相关文章

ArgumentException: 已添加了具有相同键的项。

此问题出现在asp.net mvc 5 中,前端向后端请求数据,方法的参数是模型,比如 Add(Student m), 结果浏览器显示的状态是500并返回错误提示ArgumentException,如标题,堆栈信息就不贴了,网上可以搜到…

『TensorFlow』DCGAN生成动漫人物头像_下

『TensorFlow』以GAN为例的神经网络类范式 『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上 『TensorFlow』通过代码理解gan网络_中 一、计算图效果以及实际代码实现 计算图效果 实际模型实现 相关介绍移步我的github项目。 二、生成器与判别器设计 生成器 相关参…

docker mysql 版本_把MySQL放进docker总共分几步

看完帮忙关注一下公众号 谢谢咯。把MySQL放进Docker,总共需要几步?本次就通过社区版容器安装2个mysql实例,看一下部署有多简单。1、 安装docker操作系统我使用的Centos7 x64系统,而Docker 目前看仅CentOS 7 及以上版本。本次采用Docker 仓库进…

大数据统计分析平台之二、ElasticSearch 6.2.1的安装与使用

# 下载文件cd /usr/local/software wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.1.zip yum install unzip -yunzip elasticsearch-6.2.1.zipcd elasticsearch-6.2.1/ #添加用户adduser elasticsearch#给用户赋值echo elasticsearch | passw…

mysql找出两个结果集不同数据_【每周一议】干货讨论 如何合并两个查询的结果集的数据...

ORACLE 9i 调试通过。create table TEMP1(RDATA DATE,RUSER VARCHAR2(10));create table TEMP2(RDATA DATE,RUSER VARCHAR2(10));insert into TEMP1 (RDATA, RUSER)values (to_date(05-11-2012, dd-mm-yyyy), NEW);insert into TEMP1 (RDATA, RUSER)values (to_date(02-11-2012…

Ajax 基础笔记

Ajax内容: 同步交互与异步交互  同步交互:客户端向服务器端发送请求,服务器端向客户端进行响应,这个过程中客户端不能做其他事情  异步交互:客户端向服务器端发送请求,服务器端向客户端进行响应&#x…

python turtle库输出文字_Python 海龟 turtle 画图讲解 (五):输入/输出文字及鼠标与键盘交互设计...

一、输入/输出文字 在 1. 输出文字 输出文字可以使用 write() 方法来实现,语法如下: def write(self, arg, move=False, align="left", font=("Arial", 8, "normal")) 参数说明: arg:必选参数,用于指定要输出的文字内容,该内容会输出到当前…

python3程序下载_从Python中下载文件3

如果你想获取一个网页的内容到一个变量,只是读取urllib.request.urlopen的响应:import urllib.request...url http://example.com/response urllib.request.urlopen(url)data response.read() # a bytes objecttext data.decode(utf-8) # a str; thi…