首页 前端知识 TypeScript 之 String

TypeScript 之 String

2024-04-29 12:04:58 前端知识 前端哥 585 534 我要收藏

工具: PlayGround

源码: GitHub TypeScript


String

在TypeScript中, string作为基础的字符串类型, 使用单引号(‘’)或双引号(“”)来包含字符串,使用反引号(`)来格式化文本或内嵌表达式, 存储的是UTF-16字符串序列。

let name: string = "TypeScript";
let years: number = 5;
let words: string = `您好,今年是${name}发布${years + 1}周年`;

对于字符串处理相关,提供了String的对象

// 注意: 创建参数为任意类型
const str = new String("hello");
console.log(str);			// String: "hello" 

注:string基础数据和String对象可以交互使用

String 对象提供的接口如下:

接口返回值描述
lengthnumber获取String对象的长度
toString()string返回字符串
charAt()string返回指定位置字符
charCodeAt()number返回指定的位置字符的 Unicode 编码
concat()string连接多个字符串,并返回新的字符串
indexOf()number返回某个指定的字符串值在字符串中首次出现的位置
lastIndexOf()number从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置
localeCompare()number用本地特定的顺序来比较两个字符串
match()RegExpMatchArray查找找到一个或多个正则表达式的匹配
replace()string替换与正则表达式匹配的子串
search()number检索与正则表达式相匹配的值
slice()string提取字符串的片断,并在新的字符串中返回被提取的部分
split()string[]把字符串分割为子字符串数组
substr()string从起始索引提取字符串中指定数目的字符
substring()string提取字符串中两个指定的索引号之间的字符
toLowerCase()string把字符串转换为小写
toLocaleLowerCase()string根据主机的语言环境把字符串转换为小写
toUpperCase()string把字符串转换为大写
toLocaleUpperCase()string据主机的语言环境把字符串转换为大写
trim()string从字符串中删除前后的空格和行结束符
valueOf()string返回指定字符串对象的原始值

由于支持的函数比较多,我们将分块编写他们的实例代码相关, 以便对String有更好的了解。


示例


使用string基础数据类型可以很方便String对象提供的接口。针对于String对象的参数类型为:any

let str: string = "语言";
console.log(str.length);        // 2

let strObj = new String("hello");
console.log(strObj.length);     // 5

const strList = ["1", "2", "3", "4"];
console.log(strList.length);		// 4

const strList_1 = new String(strList);
// "1,2,3,4",  7 
console.log(strList_1, strList_1.length);  

注: 数组传入String对象中,会被转换为字符串,注意。

在JavaScript或TypeScript中,字符串的编码格式是: UTF-16, 因此中英文的字符个数均为1。针对于字符串允许进行遍历。

// string基础类型的遍历
let str = "hello";
for (let i = 0; i < str.length; ++i) {
    console.log(str[i]);
}

// String对象的遍历
let strObj = new String("typescript");
for (let i = 0; i < strObj.length; i++) {
    console.log(strObj[i]);
}

在开发中,经常会出现 数字 和 字符串 混用的情况,主要有:

// 将number赋值给string
let index = 1;
let content:string = index.toString();
console.log(content);

let num: number = 6;
let strName: string = "ES";
// "使用+号组合字符串:",  "ES:6"
console.log("使用+号组合字符串:", strName + ":" + num);
// "使用反引号格式化字符串:",  "ES:6" 
console.log("使用反引号格式化字符串:", `${strName}:${num}`);

注: 推荐使用反引号对字符串进行格式化

检测字符串是否为空推荐使用!

let value: string | null = "";
if (!value) {
    console.log("value is null");
}

获取指定字符相关

  • charAt 根据索引获取指定位置字符,不支持负数
const str: string = "Hello";
// 获取首位字符
console.log(str.charAt(0));
// 获取末尾字符
console.log(str.charAt(str.length-1));
  • charCodeAt 获取指定索引位置的Unicode
const str: string = "abc";
console.log(str.charCodeAt(0));             // 97 
console.log(str.charCodeAt(str.length-1));  // 99
console.log(str.charCodeAt(-1));            // NaN
console.log(str.charCodeAt(5));             // NaN

注: 非索引位置返回的为NaN

  • fromCharCode String构造中提供的方法, 可将Unicode值转换为字符串
const numList: number[] = [97, 98, 99];
let str = ""
for (let i = 0; i < numList.length; ++i) {
    str += String.fromCharCode(numList[i]);
}
console.log(str);       // abc
  • 获取字符串首先出现的位置
// ------------ indexOf 从左往右 ------------
const str: string = "Hello TypeScript";
console.log(str.indexOf("l", 0));       // 2
console.log(str.indexOf("l", 10));      // -1

// ------------ lastIndexOf 从右往左------------
const str: string = "Hello TypeScript";
const strObj = new String(str);
// 使用string获取位置,
let pos_1 = str.lastIndexOf("l");
console.log(pos_1);					// 3 		
// 使用String对象获取位置
let pos_2 = strObj.lastIndexOf("a");
console.log(pos_2);					// -1

注: 如果获取不到位置,都会返回-1


截取字符串相关

从开始位置到结束位置截取字符串的主要方法有:

  • slice(start?: number, end?: number): string
  • substring(start: number, end?: number): string
  • substr(from: number, length?: number): string
const str = "Hello TypeScript";

// 使用 slice 方法截取字符串
const slicedStr = str.slice(6, 13);
console.log(slicedStr); // 输出 "TypeScr"

// 使用 substr 方法截取字符串
const substrStr = str.substr(6, 9);
console.log(substrStr); // 输出 "TypeScript"

// 使用 substring 方法截取字符串
const substringStr = str.substring(6, 13);
console.log(substringStr); // 输出 "TypeScr"

字符串大小写相关

大小写的方法主要有:

  • toLowerCase 将字符串变为小写
  • toUpperCase 将字符串变为大写
  • toLocaleLowerCase 将字符串根据语言环境转换为小写
  • toLocaleUpperCase 将字符串根据语言环境转换为大写
const str = "HELLO TypeScript";

// 在默认语言环境(中文简体)下,将字符串转换为小写形式
const resultDefault = str.toLocaleLowerCase();
console.log(resultDefault); // 输出 "hello typescript"

// 在英文环境下,将字符串转换为小写形式
const resultEnglish = str.toLocaleLowerCase("en-US");
console.log(resultEnglish); // 输出 "hello typescript"

// 在土耳其语环境下,将字符串转换为小写形式
const resultTurkish = str.toLocaleLowerCase("tr-TR");
console.log(resultTurkish); // 输出 "hello typescript"

组合字符串

主要接口是: String.concat(...strings: string[]): string 支持参数输入一个或者多个字符串

// 示例1
let str1 = "Hello";
let str2 = " TypeScript";
let content = str1.concat(str2);

console.log(content);   // "Hello TypeScript" 

// 示例2:
let result = "".concat("how ", "are ", "you", "?");
console.log(result);    // "how are you?" 

// 示例3:
let code = "";
const strList = ["Please", "use", "TypeScript"];
for (let i = 0; i < strList.length; ++i) {
    code = code.concat(strList[i]) + " ";
}
console.log(code.trim());   // "Please use TypeScript"

拆分字符串

主要接口是: split,简单的示例:

const str = "Please use TypeScript";
let strList = str.split(" ");
console.log(strList);   // ["Please", "use", "TypeScript"] 

在实际的开发中,注意字符串的判定:

let str = "";
let dataList = str.split("#");
console.log(dataList);        // [""] 

// 如果单纯的使用 ! 或者 length <=0 是无法进行安全检测的
console.log(!dataList, dataList.length);  // false,  1 

// 推荐:
let str = "";
let dataList = str.split("#");
if (dataList[0] == "") {
    console.error("split error");
}

正则表达式匹配相关

主要的方法有:

  • match 查找找到一个或多个正则表达式的匹配
  • search 检索与正则表达式相匹配的值
  • replace 替换与正则表达式匹配的子串

简单的实例:

const str = "Hello, my phone number is 123-456-7890";

// 使用 match 方法查找匹配的字符串
const matchResult = str.match(/\d{3}-\d{3}-\d{4}/);
console.log(matchResult); // 输出 ["123-456-7890"]

// 使用 replace 方法替换匹配的字符串
const replacedStr = str.replace(/\d{3}-\d{3}-\d{4}/, "XXX-XXX-XXXX");
console.log(replacedStr); // 输出 "Hello, my phone number is XXX-XXX-XXXX"

// 使用 search 方法搜索匹配的字符串
const searchResult = str.search(/\d{3}-\d{3}-\d{4}/);
console.log(searchResult); // 输出 26

转载请注明出处或者链接地址:https://www.qianduange.cn//article/6547.html
标签
评论
发布的文章

什么是JSON 为什么使用它

2024-05-07 13:05:36

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!