У меня есть некоторые формы, в которых пользователи будут вводить некоторые числа, я хочу, чтобы они не вводили более одной запятой в эту строку
Я сделал что-то вроде этого
var input = "1,,,,2";
var value = Regex.Replace(input, ",{1,}", ".");
Это приведет к выходу 1.2, что является правильным. Но если я введу
var input = 1,,,2,3,,,4,5,,6
все проваливается
Какой идентификатор должен делать, это сформировать последнюю версию ввода для 1.23456
Любые советы?
Спасибо
Regex.Replace (input, @"(?<=^\d+),", ".").Replace (",", "");
Это заменяет первую запятую ,
периодом .
, затем заменяет остальные запятые на empty
.
Используйте это регулярное выражение: (?<!,[^,]*?),+
var res = Regex.Replace(input, @"(?<!,[^,]*?),+", ".").Replace(",", string.Empty);
Или этот код:
var res = Regex.Replace(input, @"(?<!,[^,]*?)(,+)|(,+)",
m => m.Groups[1].Success ? "." : string.Empty);
Выход: 1.23456
3 995 000,43
в США формат3,995,000.43
, так что вы можете использоватьdecimal.Parse
, вместо того , чтобы использоватьdecimal.Parse
со шведским CultureInfo.)