网站首页 > 文章精选 正文
在 TypeScript 中,可以通过正则表达式来去除字符串中的空格和不可见的特殊符号(例如制表符 \t、换行符 \n、回车符 \r 等)。
方法一:
实现代码
function removeWhitespaceAndInvisibleChars(input: string): string {
// 使用正则表达式匹配所有空白字符和不可见特殊符号
return input.replace(/[\s\u200B-\u200D\uFEFF]/g, '');
}
// 测试用例
const testString = "Hello,\tWorld!\nThis is a test.\r\u200B\uFEFF";
const result = removeWhitespaceAndInvisibleChars(testString);
console.log("Original String:", JSON.stringify(testString));
console.log("Cleaned String:", JSON.stringify(result));
代码解析
正则表达式解释 :
- [\s]: 匹配所有的空白字符,包括空格、制表符 (\t)、换行符 (\n) 和回车符 (\r)。
- [\u200B-\u200D]: 匹配 Unicode 范围内的零宽空格字符(如零宽空格 \u200B、零宽非连接符 \u200C 等)。
- [\uFEFF]: 匹配字节顺序标记 (BOM),它是一种不可见的特殊字符。
- /g: 全局匹配标志,确保替换掉所有匹配到的字符。
- replace 方法 :
- input.replace() 方法会将所有匹配到的字符替换为空字符串 '',从而移除它们。
测试用例 :
1.输入字符串包含普通空格、制表符、换行符、回车符以及一些不可见的特殊字符。
2.输出结果中,所有这些字符都被移除,只保留了可见的普通字符。
假设输入字符串为 "Hello,\tWorld!\nThis is a test.\r\u200B\uFEFF",运行后输出如下:
Original String: "Hello,\tWorld!\nThis is a test.\r\u200B\uFEFF"
Cleaned String: "Hello,World!Thisisatest."
注意事项
- 如果需要保留某些特定的空格或特殊字符,可以调整正则表达式以排除这些字符。
- 此方法适用于大多数常见场景,但如果需要处理更复杂的 Unicode 字符集,可以根据需求进一步扩展正则表达式。
方法二
如果不使用正则表达式,我们可以通过遍历字符串并逐个检查字符的方式来实现去除空格和不可见的特殊符号。以下是一个不依赖正则表达式的 TypeScript 实现:
function removeWhitespaceAndInvisibleChars(input: string): string {
let result = '';
for (const char of input) {
// 检查字符是否是空白字符或不可见特殊符号
if (!isWhitespaceOrInvisible(char)) {
result += char;
}
}
return result;
}
function isWhitespaceOrInvisible(char: string): boolean {
// 判断是否为空白字符或不可见特殊符号
const code = char.charCodeAt(0);
return (
code === 32 || // 空格
code === 9 || // 制表符 (\t)
code === 10 || // 换行符 (\n)
code === 13 || // 回车符 (\r)
code === 8203 || // 零宽空格 (\u200B)
code === 8204 || // 零宽非连接符 (\u200C)
code === 8205 || // 零宽连接符 (\u200D)
code === 65279 // 字节顺序标记 (BOM, \uFEFF)
);
}
// 测试用例
const testString = "Hello,\tWorld!\nThis is a test.\r\u200B\uFEFF";
const result = removeWhitespaceAndInvisibleChars(testString);
console.log("Original String:", JSON.stringify(testString));
console.log("Cleaned String:", JSON.stringify(result));
- 核心逻辑 :
- removeWhitespaceAndInvisibleChars 函数通过遍历输入字符串中的每个字符,并调用辅助函数 isWhitespaceOrInvisible 来判断该字符是否需要被移除。
- 如果字符不是空白字符或不可见特殊符号,则将其添加到结果字符串中。
- 辅助函数 isWhitespaceOrInvisible :
- 该函数通过 charCodeAt(0) 获取字符的 Unicode 编码值,并与预定义的编码值列表进行比较。
- 如果字符的编码值匹配列表中的任何一个值,则认为它是空白字符或不可见特殊符号。
- 测试用例 :
- 输入字符串包含普通空格、制表符、换行符、回车符以及一些不可见的特殊字符。
- 输出结果中,所有这些字符都被移除,只保留了可见的普通字符。
猜你喜欢
- 2025-05-14 TS,TypeScript,Windows环境下构建环境,安装、编译且运行
- 2025-05-14 TypeScript 也能开发AI应用了!
- 2025-05-14 搞懂 TypeScript 装饰器
- 2025-05-14 前端小哥哥:如何使用typescript开发实战项目?
- 2025-05-14 在 React 项目中,一般怎么处理错误?
- 2025-05-14 react19 常用状态管理
- 2025-05-14 Vue3开发极简入门(2):TypeScript定义对象类型
- 2025-05-14 C#与TypeScript语法深度对比
- 2025-05-14 360前端一面~面试题解析
- 2025-05-14 Python标准库中的七个“小众但神奇”的实用函数
- 05-14TS,TypeScript,Windows环境下构建环境,安装、编译且运行
- 05-14TypeScript 也能开发AI应用了!
- 05-14搞懂 TypeScript 装饰器
- 05-14前端小哥哥:如何使用typescript开发实战项目?
- 05-14在 React 项目中,一般怎么处理错误?
- 05-14react19 常用状态管理
- 05-14Vue3开发极简入门(2):TypeScript定义对象类型
- 05-14C#与TypeScript语法深度对比
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)