Как сделать текст UITextField для появления с Первым Капиталом буквы в iPhone

Мне нравится самый короткий ответ от 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 (поиск части в строке заменяет) означает

  1. Найти все цифры (\d)
  2. Затем следует (?= ...) (взгляд вперед)
  3. Одна или несколько групп ( ... )+
  4. Ровно из 3 цифр (\d{3})
  5. Окончание с точкой (\.)
  6. Сделайте это для всех случаев (g)

Subst здесь часть означает

  1. Каждый раз, когда есть совпадение, заменяйте его на себя ([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).

Заранее извиняюсь за неправильное толкование какой-либо части обработки регулярных выражений.

53
задан Ketan P 27 September 2017 в 03:17
поделиться

1 ответ

попробуйте следующее:

tf = [[UITextField alloc] init];
tf.autocapitalizationType = UITextAutocapitalizationTypeSentences;

или установите это свойство в инспекторе свойств в Interface Builder

101
ответ дан 7 November 2019 в 08:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: