PHP的sscanf函数的JavaScript等价物?

lndjwyie  于 2023-10-15  发布在  PHP
关注(0)|答案(3)|浏览(108)

很基本的问题。我有一个字符串,它将永远是“(45.234235235,55.345345345)”的格式,小数位数可变。我想把这两个数字都取出来。在PHP中,我会使用sscanf,但我想在JavaScript中这样做。

v09wglhw

v09wglhw1#

没有类似于sscanf的东西,但是你可以使用.replace().split()

var data = str.replace(/[()\s]+/g, '').split(',');
vecaoik1

vecaoik12#

你听说过php.js项目吗?
http://phpjs.org/functions/sscanf:886
这只是直接回答你的问题。解决问题的JavaScript原生方法是使用正则表达式。请参阅Felix Kling的答案以获得正确的解决方案。

mwyxok5s

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();

相关问题