删除字符串中的间距和小数

Remove spacing and decimals from a string

本文关键字:小数 字符串 删除      更新时间:2023-09-26

首先,它必须与所有现代浏览器兼容(因为它在移动设备上使用)。我想做什么?

好吧,我有一个元标记,我必须检查,因为人们在DOM中写它的方式不同。

下面是我的例子。如果间距和小数存在,我需要删除它们。

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

所以我得到了元的内容:

var getViewport = document.querySelector('meta[name=viewport]');
var check = getViewport.getAttribute('content');
    console.log(check); // output: width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no

我甚至无法修剪它。我尝试了一些修剪功能,如:

el.replace(/^'s's*/, '').replace(/'s's*$/, '');

但在这种特殊情况下,它没有任何作用。

我需要比较内容是否匹配,否则我会用合适的内容替换它。人们用很多种方式写它,所以我不想比较每种可能的方式,而是让它看起来都一样,所以如果存在,那么它将与我上面的例子相同。

width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no
width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no
width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no
width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no

他们也可以故意或意外地在某些地方添加一些间距和删除其他间距。。。如果你理解我想说的话。由于打字速度快和语法问题,这可能需要一些编辑。

最重要的是,有人能教我如何修剪、删除"var check"中的小数吗?这样,如果存在任何情况,都会匹配这种类型的字符串:width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no

如果您想允许参数的"任意顺序",还可以使用另一种更全面的方法。

删除".0",在逗号上拆分,修剪空格,对列表进行排序,然后重新连接。

例如:

check = check.replace(/'.0*'b/g, "").split(/'s*,'s*/g).sort().join(",");

这将允许以下内容匹配:

width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no
user-scalable=no,maximum-scale=1.0,initial-scale=1.0,width=device-width

看到它在行动吗?JS Bin

您需要一个正则表达式来删除所有空格和所有".0"

check = check.replace(/('s+|'.0*'b)/g, "")

首先对其进行规范化:

var your_string = 'width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no';
var your_comparison_string = your_string.replace(/'s/g,'');

之后,您可以搜索任何浮点数。在这种情况下,搜索那些有点的就足够了,因为你会规范那些没有:

var search = your_comparison_string.match(/'d'.'d/g);
for (var i in search) {
  your_comparison_string = your_comparison_string.replace(search[i], parseInt(search[i]));
}