Javascript Regex: замена последней точки на запятую - PullRequest
5 голосов
/ 30 января 2011

У меня есть следующий код:

var x = "100.007"
x = String(parseFloat(x).toFixed(2));
return x
=> 100.01

Это работает просто так, как я хочу, чтобы это работало.Я просто хочу крошечное дополнение, которое выглядит примерно так:

var x = "100,007"
x.replace(",", ".")
x.replace
x = String(parseFloat(x).toFixed(2));
x.replace(".", ",")
return x
=> 100,01

Однако этот код заменит первое вхождение ",", где я хочу перехватить последнее.Любая помощь будет оценена.

Ответы [ 5 ]

15 голосов
/ 30 января 2011

Вы можете сделать это с помощью регулярного выражения:

x = x.replace(/,([^,]*)$/, ".$1");

Это регулярное выражение соответствует запятой, за которой следует любое количество текста, не включая запятую.Строка замены - это просто точка, за которой следует то, что было после первоначальной последней запятой.Другие запятые в строке не будут затронуты.

Теперь, если вы действительно конвертируете числа, отформатированные в «европейском стиле» (из-за отсутствия лучшего термина), вам также понадобитсябеспокоиться о "."символы в местах, где число в «американском стиле» будет иметь запятые.Я думаю, что вы, вероятно, просто хотите избавиться от них:

x = x.replace(/\./g, '');

Когда вы используете функцию ".replace ()" для строки, вы должны понимать, что она возвращает модифицированная строкаОднако он не изменяет исходную строку , поэтому оператор типа:

x.replace(/something/, "something else");

не влияет на значение "x".

2 голосов
/ 30 января 2011

Вы можете сделать это, используя функцию lastIndexOf () , чтобы найти последнее вхождение , и заменить его.

Альтернативой является использование регулярного выражения с концоммаркера линии:

myOldString.replace(/,([^,]*)$/, ".$1");
1 голос
/ 30 января 2011

Вы можете использовать регулярное выражение.Вы хотите заменить последнее «,», поэтому основная идея - заменить «,» для которого нет «,» после.

x.replace(/,([^,]*)$/, ".$1");

Вернет то, что вы хотите: -).

1 голос
/ 30 января 2011

Вы можете использовать lastIndexOf, чтобы найти последний случай ,.Затем вы можете использовать slice, чтобы поместить деталь до и после , вместе с . между ними.

0 голосов
/ 30 января 2011

Вам не нужно беспокоиться о том, является ли это последним ".", Потому что есть только один.JavaScript не хранит числа внутри себя с наборами запятых или разделенных точками.

...