Javascript 相当于 PHP 的 sscanf 函数?

发布于 2024-11-04 18:55:14 字数 120 浏览 0 评论 0原文

非常基本的问题。我有一个字符串,它的格式始终为“(45.234235235,55.345345345)”,小数位数可变。我想提取这两个数字。在 PHP 中,我会使用 sscanf,但我想在 Javascript 中执行此操作。

Pretty basic question. I have a string, it will always be in the format of "(45.234235235,55.345345345)" with variable numbers of decimal places. I want to extract both of these numbers. In PHP I would sscanf, but I want to do this in Javascript.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

优雅的叶子 2024-11-11 18:55:14

没有什么比sscanf更好的了,但是你可以使用 .replace().split()

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

There is nothing like sscanf, but you can use .replace() and .split():

var data = str.replace(/[()\s]+/g, '').split(',');
夏雨凉 2024-11-11 18:55:14

您听说过 php.js 项目吗?

http://phpjs.org/functions/sscanf:886

这是直接回答你的问题仅有的。解决问题的 JavaScript 原生方法是使用正则表达式。请参阅 Felix Kling 的回答了解正确的解决方案。

Have you heard of the php.js project?

http://phpjs.org/functions/sscanf:886

This is to directly answer your question only. The JavaScript-native way to tackle your problem would be to use regular expressions. See Felix Kling's answer for the proper solution.

淑女气质 2024-11-11 18:55:14

为了直接回答这个问题,PHP(或 C 的)sscanf 函数的 Javascript 等效项是正则表达式子匹配。例如,如果在 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();

To directly answer the question, the Javascript equivalent of PHP's (or C's) sscanf function are regexp submatches. For example, if in C you have:

const char *input = "SN/94321 2023/May/06 123.45";
sscanf(input, "SN/%u %4u/%3s/%2u %f", &id, &year, &mon, &day, &cost);

In Javascript you have:

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

Generally, it's far more efficient to perform parsing in a single step, natively, with a pre-compiled regexp, than doing it by script.

By the way, the Javascript-native way to address external representation (input parsing) is JSON.parse();

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文