Разрешить использовать только первую букву в строке (регулярное выражение) - PullRequest
0 голосов
/ 12 сентября 2011
function toTitleCase(str){
    var styleName = $("a.monogramClassSelected").attr("styleKey");
        if (styleName == 'script') {
        return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}).replace(/\s/, '');
        } else {
        return str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
        }

}

Это работает (благодаря справке, приведенной ниже) - для удаления пробелов и первой заглавной буквы.

Однако мне нужны другие функции и я не правильно сформулировал свой вопрос в первый раз.

Мне нужно использовать регулярное выражение, чтобы только первая буква была заглавной.Приведенный выше метод замены строки работает не полностью, так как пользователь может обойти метод, используя пробел.Таким образом, они могли бы иметь «To Two».Мне нужно переделать регулярное выражение, чтобы только первая буква была заглавной, независимо от пробелов.(и первая буква не должна быть написана заглавными буквами)

спасибо всем за помощь!

Ответы [ 3 ]

1 голос
/ 12 сентября 2011

Это регулярное выражение заменяет все последовательности в форме нуля или в точности один пробел, за которым следует заглавная буква только одной буквы, при этом остальная часть текста остается нетронутой (допускается несколько пробелов)

str.replace(/\s{0,1}([A-Z])(\s*\w*)/g, '$1$2');

Доступ к группам возможен из $ 1 и $ 2 в строке замены.

regex explaination

Пример

Ввод «Человек, который никогда не ошибался, никогда не пробовал ничего нового. - Альберт Эйнштейн :)»

Замененная строка «Человек, который никогда не ошибался, никогда не пробовал ничего нового. -Альберт Эйнштейн:) "

Если вы хотите удалить множественные пробелы вместо нуля или один пробел, предшествующий заглавной букве, тогда используйте \s* вместо \s{0,1} в приведенном выше выражении.

0 голосов
/ 12 сентября 2011

Это сделает это:

function UppercaseFirst(str) {
    str = str.replace(/^\s+/, '');
    str = str.charAt(0).toUpperCase() + str.substr(1);
    return str
}

var mystring = " this is a test";

alert(UppercaseFirst(mystring));
0 голосов
/ 12 сентября 2011

Чтобы просто удалить пробелы, это работает для меня:

function toTitleCase(str){
    str = str.replace(/\s[A-Z]/, '');
    // str = str.replace(/[A-Z]\s/, '');
    return str;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...