文本格式化

字符串

JavaScript的String类型用于表示文本型的数据,它由无符号整数值(UTF-16)作为元素而组成的集合。字符串在中的每个元素在字符串中占据一个位置。

String字面量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 使用单引号或双引号创建简单字符串
let a = 'string'; // string
let b = "test"; // test

// 使用转义字符创建复杂字符串
let c = '\'test\''; // 'test'

// 十六进制转义序列
let d = '\xA9'; // ©

// Unicode转移序列
let e = '\u00A9'; // ©

// Unicode字元溢出
// 在ES6中,通过Unicode代码点转义,可以使用十六进制数对任意字符进行转义,这使得使用Unicode转义表示大于0x10FFFF的字符成为可能
'\u{2F804}'
'\uD874\uDc04' // 简单的Unicode转义需要拆分为相应的两个小于0x10FFFF的部分

字符串对象

String对象是对原始string类型的封装。

String对象方法:

方法 描述
charAtcharCodeAtcodePointAt 返回字符串指定位置的字符或者字符编码
indexOflastIndexOf 分别返回字符串中指定字串的位置或者最后位置
startsWithendsWithincludes 返回字符串是否以指定字符开头、结束包含指定的字符串
concat 连接两个字符串并返回新的字符串
fromCharCodefromCodePoint 从指定的Unicode值序列构造一个字符串,这是String类方法,不是实例方法
split 通过将字符串分离成一个个子串来把一个String对象分割到一个字符串数组中
slice 从一个字符串提取片段并作为新字符串返回
substringsubstr 分别通过指定起始和结束位置,起始位置和长度来返回字符串的指定子集
matchreplacesearch 通过正则表达式来工作
toLowerCasetoUpperCase 分别返回字符串的小写表示和大写表示
normalize 按照指定的一种Unicode正规形式将当前字符串正规化
repeat 将字符串内容重复指定次数后返回
trim 去掉字符串开头和结尾的空格

多行模板字符串

模板字符串是一种允许内嵌表达式的String字面量,其使用``符号表示。

1
2
3
4
5
let a = `a is
b`;
console.log(a); // a is \r\nb
let x = 'b';
console.log(`a is ${x}`); // a is b

国际化

Intl对象是ECMAScript国际化API的命名空间,它提供了语言敏感的字符串比较、数字格式化和日期时间格式化功能。CollatorNumberFormatDateTimeFormat对象的构造函数是Intl对象的属性。

日期和时间格式化

1
2
3
4
5
6
7
8
9
10
11
12
13
let msPerDay = 24 * 60 * 60 * 1000;
// July 17, 2014 00:00:00 UTC
let july172014 = new Date(msPerDay * (44 * 365 + 11 + 197));
let options = {
year: '2-digit',
month: '2-digit',
day: '2-digit',
hour: '2-digit',
minute: '2-digit',
timeZoneName: 'short',
};
let americanDateTime = new Intl.DateTimeFormat('en-US', options).format;
console.log(americanDateTime(july172014)); // 07/17/14, 08:00 AM GMT+8

数字格式化

1
2
3
4
5
6
7
8
9
10
11
12
let gasPrice = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimunFractionDigits: 3
});
console.log(gasPrice.format(5.259)); // $5.26

let hanDecimalRMBInChina = new Intl.NumberFormat('zh-CN-u-nu-hanidec', {
style: 'currency',
currency: 'CNY'
});
console.log(hanDecimalRMBInChina.format('1314.52')); // ¥一,三一四.五二

定序

Collator通常用于字符串比较和排序

1
2
3
4
// 德语中有两种不同的排序方式 电话本(phonebook) 和 字典(dictionary). 电话本排序强调发音, 比如在排序前 “ä”, “ö”等被扩展为 “ae”, “oe”等发音
let names = ["Hochberg", "Hönigswald", "Holzman"];
let germanPhonebook = new Intl.Collator("de-DE-u-co-phonebk");
console.log(names.sort(germanPhonebook.compare).join(", ")); // Hochberg, Hönigswald, Holzman

正则表达式

正则表达式是用于匹配字符串中字符组合的模式。在JavaScript中正则表达式也是对象。

创建正则表达式

1
2
3
4
5
6
// 在JavaScript中创建正则表达式有两种方法:
// 1. 使用正则表达式字面量,如果表达式不变该方法拥有较好的性能
let re = /ab+c/;

// 2. 使用RegExp的构造函数
let reg = new RegExp('ab+c');

编写一个正则表达式的模式

一个正则表达式的模式是由简单字符所构成的/abc/,或是简单和特殊字符的组合/ab*c/

本文参考资料

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • © 2019-2021 musi

请我喝杯咖啡吧~

支付宝
微信