很基本的问题。我有一个字符串,它将永远是“(45.234235235,55.345345345)”的格式,小数位数可变。我想把这两个数字都取出来。在PHP中,我会使用sscanf,但我想在JavaScript中这样做。
v09wglhw1#
没有类似于sscanf的东西,但是你可以使用.replace()和.split():
sscanf
.replace()
.split()
var data = str.replace(/[()\s]+/g, '').split(',');
vecaoik12#
你听说过php.js项目吗?http://phpjs.org/functions/sscanf:886这只是直接回答你的问题。解决问题的JavaScript原生方法是使用正则表达式。请参阅Felix Kling的答案以获得正确的解决方案。
mwyxok5s3#
为了直接回答这个问题,PHP(或C)的sscanf函数的JavaScript等价物是regexp子匹配。例如,如果在C中你有:
const char *input = "SN/94321 2023/May/06 123.45"; sscanf(input, "SN/%u %4u/%3s/%2u %f", &id, &year, &mon, &day, &cost);
在JavaScript中,你有:
const parser = /SN\/(\d+) (\d+)\/(\w+)\/(\d+) (\d+(\.\d+)?)/; const input = "SN/94321 2023/May/06 123.45"; var tokens = input.match(parser); var id = Number(tokens[1]), year = Number(tokens[2]), mon = tokens[3], day = Number(tokens[4]), cost = Number(tokens[5]);
一般来说,使用预编译的正则表达式在一个步骤中执行解析比通过脚本执行解析要高效得多。顺便说一下,处理外部表示(输入解析)的Javascript原生方式是JSON.parse();
JSON.parse();
3条答案
按热度按时间v09wglhw1#
没有类似于
sscanf
的东西,但是你可以使用.replace()
和.split()
:vecaoik12#
你听说过php.js项目吗?
http://phpjs.org/functions/sscanf:886
这只是直接回答你的问题。解决问题的JavaScript原生方法是使用正则表达式。请参阅Felix Kling的答案以获得正确的解决方案。
mwyxok5s3#
为了直接回答这个问题,PHP(或C)的sscanf函数的JavaScript等价物是regexp子匹配。例如,如果在C中你有:
在JavaScript中,你有:
一般来说,使用预编译的正则表达式在一个步骤中执行解析比通过脚本执行解析要高效得多。
顺便说一下,处理外部表示(输入解析)的Javascript原生方式是
JSON.parse();