【问题标题】:Remove spacing and decimals from a string从字符串中删除空格和小数
【发布时间】:2014-10-09 16:05:52
【问题描述】:

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

我必须检查一个元标记,因为人们将其写入 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

【问题讨论】:

  • 字符串元素的顺序是否总是一致的?
  • 也很不错。不确定此“视口”是否必须按此特定顺序排列。我把它从 Bootstrap 上取下来了。
  • 好吧,我的解决方案会更复杂一些...使用带有键/值对的映射...我会做一个 jsfiddle 来解释它;)
  • 好吧@PatrickFerreira。我也会等待那个解决方案。

标签: javascript regex trim


【解决方案1】:

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

删除“.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

【讨论】:

  • 现在你想到了每一种可能性。所以顺序对于这个元标记是否有效并不重要?那么这会做得很好!
【解决方案2】:

您需要一个正则表达式来删除所有空格和所有“.0”。这样就可以了:

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

【讨论】:

  • 这是一个很好的选择。我的解决方案基本上是一样的,但有更多解释性的东西。为了编程和效率,您应该使用 Scott 的这个。
  • 在@androidavid 回答后立即测试。也有效,而且很短:D!感谢您的回答 +1
【解决方案3】:

首先你把它标准化:

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

之后,您可以搜索任何浮动数字。在这种情况下,搜索 WITH dot 就足够了,因为您将规范那些没有:

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]));
}

【讨论】:

  • 哇,这比我还长!但是它工作正常。也感谢您的解释+1
猜你喜欢
  • 1970-01-01
  • 2021-01-27
  • 2021-04-23
  • 2011-09-21
  • 2017-11-20
相关资源
最近更新 更多