js如何替换字符串中的中文空格?

js如何替换字符串中的中文空格?

我尝试使用了下面几个方法都不行
str.replace(/[\u3000]/g, ' ')

const fullWidthSpace = String.fromCharCode(12288);
str.split(fullWidthSpace).join('');
str.replace(/[\u3000\u3001\u3002\u3003\u3004\u3005\u3006\u3007\u3008\u3009\u300A\u300B\u300C\u300D\u300E\u300F\u3010\u3011\u3012\u3013\u3014\u3015\u3016\u3017\u3018\u3019\u301A\u301B\u301C\u301D\u301E\u301F\u302A\u302B\u302C\u302D\u302E\u302F]+/g, '');
阅读 1.9k
avatarAI BotBETA

你的第一个尝试几乎是正确的,但可能你的中文空格不是 Unicode 字符 \u3000(全角空格,也称为IDEOGRAPHIC SPACE)。在Unicode中,全角空格的正确编码确实是 \u3000,但如果你发现它不起作用,可能是因为你的字符串中的空格实际上是其他类型的全角字符或空格。

不过,假设你确实想替换 \u3000(全角空格),你的第一个正则表达式是正确的。这里是一个工作示例:

let str = "这是一个包含 中文空格 的字符串"; // 注意这里的中文空格
let replacedStr = str.replace(/[\u3000]/g, ' '); // 使用普通空格替换全角空格
console.log(replacedStr); // 输出: "这是一个包含 中文空格 的字符串"

如果你的字符串中包含其他类型的空格或全角字符,并且你想替换它们,你需要确保你的正则表达式包含了所有这些字符。但请注意,你提供的第二个正则表达式实际上是用于替换一系列的全角标点符号,而不是空格。

如果你想要替换所有可能的全角空格字符(这可能包括不同的全角空格变种),你可能需要扩大你的正则表达式以包含这些字符。但是,通常情况下,\u3000 是最常用的全角空格。

如果你发现 \u3000 不工作,但你的字符串中确实有看起来像空格的字符,那么可能是以下情况之一:

  1. 你的字符串中的空格实际上不是全角空格,而是其他类型的Unicode空格字符。
  2. 你的字符串中的空格是由多个不可见的Unicode字符组成的(例如,一个零宽空格后跟一个全角空格)。

在这种情况下,你可能需要更仔细地检查你的字符串内容,以确定正确的替换策略。

2 个回答
  • [\u3000] 匹配全角空格。
    这样可以确保只去除中文空格,而保留英文空格。
    image.png

问题原因:输入法默认都是半角空格,正则表达式其实是没问题的,输入全角空格可以替换
最新:难道是因为输入法切换中英文输入空格,其实输入的都是英文空格
我使用input.value.replace(/[\u3000\s]/g, '')是可以替换的,但是同时也把英文空格去掉了,请问如何只替换中文空格,不替换英文空格呢?

replace(/[\u3000\ufeff\s]+/g, '')这样也是一样的效果,两种都被替换
推荐问题
宣传栏