将空格替换为   导致隐形 â 角色

jed*_*edu 2 html javascript jquery

我正在使用如下选项列表填充选择框:

\n
optionsString = optionsString.replace(/\\s/g, ' ');\n
Run Code Online (Sandbox Code Playgroud)\n

我这样做是为了保留单词之间的空格。如果我有这样的单词,我不希望 DOM 删除额外的空格:

\n
<option>a b    c</option>\n
Run Code Online (Sandbox Code Playgroud)\n

如果我控制台记录选择框的值,我会得到:

\n

a b ca b c这正是我想要的。但是,在 b 之后添加了一个隐藏字符 \xc3\xa2。

\n

当我将字符串发送到后端数据库时,数据库找不到任何属于 ab c 的记录。当我将字符串转换为十六进制时,我看到了不可见的字符。有没有办法在不添加这个特殊字符的情况下不删除空格?

\n

T.J*_*der 5

请注意,&nbsp;创建一个不间断空格,而不仅仅是一个空格。如果您使用该选项的值,它将包含不间断空格,而不仅仅是空格。如果您希望它们是空格,则必须将它们替换为空格:

const value = theSelectBoxOrOptionElement.value.replace(/\u00A0/g, " ");
Run Code Online (Sandbox Code Playgroud)

\u00A0是创建的不间断空格字符&nbsp;。)

但请注意,这\s将匹配任何空格,而不仅仅是空格,因此您的replace操作是有损操作(所有类型的空格都被替换为&nbsp;,所以当我们想返回时我们无法知道哪些是哪些)。

这是一个例子:

const value = theSelectBoxOrOptionElement.value.replace(/\u00A0/g, " ");
Run Code Online (Sandbox Code Playgroud)