Как сопоставить числа с десятичными точками - PullRequest
2 голосов
/ 22 апреля 2019

Я хочу установить две отдельные переменные в два разных числа в строке.

Я использовал строку типа «100,125» и смог получить два числа, но как только я изменил строку, чтобы включить десятичные дроби (например, «100.172,125.181»), он будет возвращать число после десятичной дроби.

local x, y = string.match("100,125", "(%d+),(%d+)")
--this code works, making x = 100 and y = 125

однако

local x, y = string.match("100.134,125.122", "(%d+),(%d+)")
--this did not work correctly

Используя последний метод, я получил переменные x и y, которые были установлены в числа после десятичных дробей. Я думаю, что я должен переформатировать строку к чему-то вроде "100.1x125.5", но я не уверен. спасибо и извините за вопрос новичка

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

%d соответствует только цифрам от 0 до 9. Вы также хотите использовать десятичную точку, поэтому вы должны использовать набор [%d.], чтобы сопоставить любую цифру или точку.

Поэтому измените шаблон на следующее:

local x, y = string.match("100.134,125.122", "([%d.]+),([%d.]+)")
print(x)
print(y)

Это правильно печатает:

100.134
125.122
0 голосов
/ 22 апреля 2019

Возможно, вы захотите установить split rock :

> split = require("split")
> s = "100.134,125.122"
> x,y = table.unpack(split.split(s, ","))
> x
100.134
> y
125.122
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...