如果我有一个类似于以下内容的文字字符串:
'(-0.0236, 0.0000, -31.2907)'
将其解析为 3 个 float 的最佳和最快方法是什么,我遇到的问题是,因为 float 可以是任何长度精度,所以我感觉就像一个典型的正则表达式,我还有太多的情况需要考虑正负符号。
最佳答案
这是另一种(有点hacky)的方法:
const SEPARATOR = /[^\d.+-]+/;
function parseFloats(str) {
return str.split(SEPARATOR).filter(Boolean).map(parseFloat);
}
console.info(parseFloats('(-0.0236, 0.0000, -31.2907)'));
不是匹配 float (参见我的 other answer ,我仍然更喜欢它,因为它更容易理解),而是匹配所有不是有效浮点字符并将其用作分隔符。然后将其传递给一个过滤器,该过滤器会删除空字符串,最后单独解析每个结果 float 。
神奇的filter(Boolean)
之所以有效,是因为空字符串在转换为 bool 值时计算结果为false
。这与执行 filter(str => Boolean(str))
完全相同。
关于javascript - 从字符串中解析 Vector3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58847017/