非常基本的问题。我有一个字符串,它的格式始终为“(45.234235235,55.345345345)”,小数位数可变。我想提取这两个数字。在 PHP 中,我会使用 sscanf,但我想在 Javascript 中执行此操作。
您听说过 php.js 项目吗?
http://phpjs.org/functions/sscanf:886
这只是为了直接回答您的问题。解决问题的 JavaScript 原生方法是使用正则表达式。请参阅 Felix Kling 的回答 了解正确的解决方案。
为了直接回答这个问题,PHP(或 C 的)sscanf 函数的 Javascript 等价物是正则表达式子匹配。例如,如果在 C 语言中你有:
const char *input = "SN/94321 2023/May/06 123.45";
sscanf(input, "SN/%u %u/%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();