Javascript 更改字符串中的某些数字

Javascript 更改字符串中的某些数字,javascript,Javascript,我有一个字符串,它有时包含css字体大小。 例如: str = '<span style="font-size: 200px;white-space:nowrap;">Text</span> <br><span style="color:#555555;font-size:10px;">Some otherText</span>'; 搜索和替换不是我的强项。如何在字符串中搜索所有字体大小,然后计算每个数字 因此,具有此比率的上述字符串

我有一个字符串,它有时包含css字体大小。 例如:

str = '<span style="font-size: 200px;white-space:nowrap;">Text</span>
<br><span style="color:#555555;font-size:10px;">Some otherText</span>';
搜索和替换不是我的强项。如何在字符串中搜索所有字体大小,然后计算每个数字

因此,具有此比率的上述字符串将变为:

str = '<span style="font-size: 300px;white-space:nowrap;">Text</span>
<br><span style="color:#555555;font-size:15px;">Some otherText</span>';
str='Text

其他一些文本';
假设将其作为字符串,并且没有更好的方法(如果这是来自
innerHTML
或其他,那么您做得不对),那么

如果任何声明不在
style
属性中,则可以使用
getComputedStyle()


我没有使用真正的
documentFragment
,因为它不支持
innerHTML
属性。

您可以使用
String
对象的
replace
方法,并指定一个函数作为替换值

str.replace(/font-size:\s*(\d*)/g,
            function (line, p1) { return ratio * parseInt(p1) })

Alex是对的,也许有更好的方法,但是用字符串代替答案来回答你的问题:

str = str.replace(/(\d+)px/g, function (fullStr, pixels) {
  return (pixels * 1.5) + 'px';
});

您可以使用RegExp,其中“:0000px”,如果您确定要使用一个单位“px”,则从字符串中获取所有数字并对其进行解析。不要使用JavaScript攻击原始HTML。DOM是您的朋友。我考虑过这一点,但它不知道
style
属性。如果我把它作为一个子串包含在一个文本节点中,它会被弄坏的。嘘,你什么时候得到比我更多的代表,嗯?我要收回那张向上的选票。自从你离开后,总得有人来收拾残局:有些人说,将base(radix)参数传递给
parseInt
@VisioN总是很好。我的浏览器在读取
fontSize
属性时总是去掉前导的
0
s,任何看起来像十六进制的值都会返回一个空字符串。它就像一个符咒。谢谢Alex-创建div的目的是什么?这个方法比尼克建议的好吗?@JohnSmith这个方法的优点是它不会损坏看起来像CSS值的东西,而CSS值是实际文档的文本节点。
div
的用途由其变量名和答案的最后一句解释。
var fauxDocFrag = document.createElement("div");

fauxDocFrag.innerHTML = str;

[].forEach.call(fauxDocFrag.getElementsByTagName("*"), function(element) {
     element.style.fontSize = (parseInt(elements.style.fontSize) * 1.5)
                              + "px";
});

str = fauxDocFrag.innerHTML;
str.replace(/font-size:\s*(\d*)/g,
            function (line, p1) { return ratio * parseInt(p1) })
str = str.replace(/(\d+)px/g, function (fullStr, pixels) {
  return (pixels * 1.5) + 'px';
});