Мне нравится самый короткий ответ от VisionN, за исключением случаев, когда мне нужно изменить его для числа без десятичной точки (123 доллара вместо 123,00 долларов США), он не работает, поэтому вместо быстрого копирования / вставки мне нужно расшифровать тайный синтаксис JavaScript регулярное выражение. [1 131]
Вот оригинальное решение
n.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '[110]amp;,');
Я сделаю это немного длиннее:
var re = /\d(?=(\d{3})+\.)/g;
var subst = '[111]amp;,';
n.toFixed(2).replace(re, subst);
Re
part here (поиск части в строке заменяет) означает
\d
) ?=
...) (взгляд вперед) (
... )+
\d{3}
) \.
) g
) Subst
здесь часть означает
[1114]amp;
), за которым следует запятая. Поскольку мы используем string.replace
, весь другой текст в строке остается прежним, и только найденные цифры (те, за которыми следуют 3,6,9 и т. Д. Другие цифры) получают дополнительную запятую.
Таким образом, в числе 1234567,89 цифры 1 и 4 соответствуют условию ( 1 23 4 567,89) и заменяются на « 1, "и" 4, ", что привело к 1 234 567,89.
Если нам вообще не нужна десятичная точка в долларах (т. Е. 123 доллара вместо 123,00 долларов США), мы можем изменить регулярное выражение следующим образом:
var re2 = /\d(?=(\d{3})+$)/g;
Оно опирается на конец строки ( $
) вместо точки (\.
) и окончательное выражение будет (обратите внимание также toFixed(0)
):
n.toFixed(0).replace(/\d(?=(\d{3})+$)/g, '[113]amp;,');
Это выражение даст
1234567.89 -> 1,234,567
Также вместо конца строки ($
) в приведенном выше регулярном выражении вы также можете выбрать границу слова (\b
).
Заранее извиняюсь за неправильное толкование какой-либо части обработки регулярных выражений.
попробуйте следующее:
tf = [[UITextField alloc] init];
tf.autocapitalizationType = UITextAutocapitalizationTypeSentences;
или установите это свойство в инспекторе свойств в Interface Builder