Определение регистра (верхнего / нижнего) первой буквы в строке - PullRequest
3 голосов
/ 19 октября 2011

Как в веб-приложении определить, является ли первая буква в данной строке прописными или строчными буквами с использованием JavaScript?

Ответы [ 5 ]

9 голосов
/ 19 октября 2011

Вы можете использовать toUpperCase:

if(yourString.charAt(0) === yourString.charAt(0).toUpperCase()) {
    //Uppercase!
}

Если вы собираетесь использовать это на регулярной основе, я бы предложил поместить его в функцию в прототипе String, что-то вроде этого:

String.prototype.isFirstCapital = function() {
    return this.charAt(0) === this.charAt(0).toUpperCase();   
}
if(yourString.isFirstCapital()) {
    //Uppercase!
}

Обновление (на основе комментариев)

Я не знаю, что вы на самом деле хотите сделать в случае, если строка не с буквой, но простым решением было бы добавить быструю проверку, чтобы увидеть, если это так, и вернуть false, если нет:

String.prototype.isFirstCapital = function() {
    return /^[a-z]/i.test(this) && this.charAt(0) === this.charAt(0).toUpperCase();   
}
1 голос
/ 19 октября 2011

Это будет работать только с английским алфавитом.

var ch = myStr.chatAt(0);
if (ch >= 'a' && ch <= 'z') {
    // small
} else if (ch >= 'A' && ch <= 'Z') {
    // capital
} else {
    // not english alphabet char
}
0 голосов
/ 19 октября 2011

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

function getFirstCase(s) {
    return (/^[\d\W]*[A-Z]/).test(s) ? 'upper' :
        (/^[\d\W]*[a-z]/).test(s) ? 'lower' :
        'none';
}

Явно ворует @ тесты Лаппла:

console.log(getFirstCase('alphabet'), 
            getFirstCase('Sunshine'),
            getFirstCase('123123'),
            getFirstCase('@Hi'),
            getFirstCase('\nHAHA'));

// lower upper none upper upper

См. http://jsfiddle.net/nrabinowitz/a5cQa/

0 голосов
/ 19 октября 2011
var mystring = "Test string";
var first= "";
if (mystring )
{
    first= mystring[1];
}


if (first)
{
    $('p').each(function()
    {
        if ($(this).text().charAt(0).toUpperCase() === $(this).text().charAt(0))
        {
           alert("Uppercase");
        }
    });
}
0 голосов
/ 19 октября 2011

Это будет вызываться рекурсивно, пока не будет достигнута первая буква в строке, в противном случае возвращается 'no letters'.

function getFirstCase(string) {
    if (string === '') return 'no letters';

    var firstChar = string.charAt(0);

    /*
     * If both lowercase and uppercase
     * are equal, it is not a letter
     */
    if (firstChar.toLowerCase() === firstChar.toUpperCase()) {
        return getFirstCase(string.substr(1));
    } else {
        return firstChar.toLowerCase() === firstChar ? 'lowercase' : 'uppercase';
    }
}

Тестирование:

console.log(getFirstCase('alphabet'), 
            getFirstCase('Sunshine'),
            getFirstCase('123123'),
            getFirstCase('@Hi'),
            getFirstCase('\nHAHA'));
...