程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

TypeScript 实现去除字符串中的空格与不可见特殊符号

balukai 2025-05-14 11:57:07 文章精选 2 ℃

在 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));

代码解析

正则表达式解释

  1. [\s]: 匹配所有的空白字符,包括空格、制表符 (\t)、换行符 (\n) 和回车符 (\r)。
  2. [\u200B-\u200D]: 匹配 Unicode 范围内的零宽空格字符(如零宽空格 \u200B、零宽非连接符 \u200C 等)。
  3. [\uFEFF]: 匹配字节顺序标记 (BOM),它是一种不可见的特殊字符。
  4. /g: 全局匹配标志,确保替换掉所有匹配到的字符。
  5. replace 方法 :
  6. 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."

注意事项

  1. 如果需要保留某些特定的空格或特殊字符,可以调整正则表达式以排除这些字符。
  2. 此方法适用于大多数常见场景,但如果需要处理更复杂的 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));
  1. 核心逻辑 :
  2. removeWhitespaceAndInvisibleChars 函数通过遍历输入字符串中的每个字符,并调用辅助函数 isWhitespaceOrInvisible 来判断该字符是否需要被移除。
  3. 如果字符不是空白字符或不可见特殊符号,则将其添加到结果字符串中。
  4. 辅助函数 isWhitespaceOrInvisible :
  5. 该函数通过 charCodeAt(0) 获取字符的 Unicode 编码值,并与预定义的编码值列表进行比较。
  6. 如果字符的编码值匹配列表中的任何一个值,则认为它是空白字符或不可见特殊符号。
  7. 测试用例 :
  8. 输入字符串包含普通空格、制表符、换行符、回车符以及一些不可见的特殊字符。
  9. 输出结果中,所有这些字符都被移除,只保留了可见的普通字符。
最近发表
标签列表