首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript将多个空格压缩成一个空格,就像HTML?奇怪的行为

javascript将多个空格压缩成一个空格,就像HTML?奇怪的行为
EN

Stack Overflow用户
提问于 2019-03-27 13:38:38
回答 1查看 99关注 0票数 2

我遇到了这种奇怪的行为,我真的不明白为什么。

我有一个对字符串进行规范化的函数:

代码语言:javascript
复制
function normalize_for_find(name) {
    return name
        .trim()
        .replace(/&/g, '&')
        .replace(/ /g, ' ');
}

如果我在chrome控制台中执行它,我会将"  "转换成两个空格,这就是我想要的:

代码语言:javascript
复制
normalize_for_find("MONKEY BISCUITS  200g")
"MONKEY BISCUITS  200g"

但是当我在这个方法中使用它时,它以某种方式将"  "转换为一个空间。

代码语言:javascript
复制
function find_by_name(elems, name) {
    name = normalize_for_find(name);
    return _.find(elems, function(e) {
        return name === normalize_for_find(e.name);
    });
}

看一看这个调试:

name"MONKEY BISCUITS  200g"身份启动

然后在调用normalize_for_find之后,它显示为"MONKEY BISCUITS 200g" (只有一个空格)

我需要两个空格,就像我从控制台执行的时候一样。

这里有更多关于观察每个变量的信息,这对我来说一点意义都没有!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-27 15:23:58

这两个字符串之间的不同之处在于,原始e.name包含一个“非中断空格”字符,它是ASCII码160,而normalize_for_find方法插入一个规则空格,它是ASCII码32。

正如另一位用户所建议的,这也可以通过将normalize方法更改为以下方法来修复:

代码语言:javascript
复制
function normalize_for_find(name) {
    var parsed = jQuery.parseHTML(name);
    if (!parsed || parsed.length == 0) return '';
    return parsed[0].data.trim();
}

(请注意,对于''jQuery.parseHTML(name)将返回null )

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55370464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档