1

给定一串文本

var string1 = 'IAmNotFoo';

你如何只提取大写字母?

'IANF'

以下是每个链接的一些方法:

function isUpperCase1(aCharacter) {    
    if ( ch == ch.toUpperCase() ) {
        return true;
    }
    return false;
}

function isUpperCase2( aCharacter ) {    
    return ( aCharacter >= 'A' ) && ( aCharacter <= 'Z' );
}

var string1 = 'IAmNotFoo',
    string2 = '',
    i = 0,
    ch = '';

while ( i <= string1.length ) {
    ch = string1.charAt( i );
    if (!isNaN( ch * 1 ) ) {
        alert('character is numeric'); 
    }
    else if ( isUpperCase2() ) { // or isUpperCase1
        string2 += ch;
    }
    i++;
}

或者简单地说(根据下面的评论):

var upper = str.replace(/[^A-Z]/g, '');

SO相关

在字符串中查找大写字符

如何使用 JavaScript 测试字符串中的字母是大写还是小写?

4

2 回答 2

1

我喜欢使用数字,所以我更喜欢转换为整数并检查 ascii 范围。你可以在这里看到这个图表 www.ascii-code.com。

所有大写字母都有一个与小写字母不同的 ascii 代码。

做这样的事情

String str = "IAmNoFoo";
returnCaps(str);

Public static String returnCaps(String, str)
{
    for (int i = 0; i < str.length; i++)
        {
            int letter = str.convertToInt(charAt(i));
            if (letter >= 65 || letter <= 90)
              return str.substring.charAt(i);
            else
               return "No Capital Letters Found"
        }
    }

您可能需要将循环检查设置为 i <= str.length

这将检查字符串每个索引处的字符是否为大写字母。我认为用数学方式思考是最容易的。

稍作调整,您就可以很容易地将其变成递归方法。

于 2012-08-08T22:10:59.753 回答
1

regex 方法是迄今为止最简单和最有效的方法,因为它只是一个步骤,而不是一个大循环。

于 2012-08-08T22:13:03.173 回答