搜索字符串中的大写字母

时间:2011-10-31 18:23:54

标签: java

我正在尝试在字符串中搜索大写字母的最后一个索引。我不介意使用正则表达式,但我不太熟悉它们。

int searchPattern = searchString.lastIndexOf(" ");      
String resultingString = searchString.substring(searchPattern + 1);

正如您所看到的,使用我当前的代码,我正在寻找字符串中包含的最后一个空格。我需要改变它来搜索最后一个大写字母。

5 个答案:

答案 0 :(得分:18)

您可以按如下方式编写方法:

public int lastIndexOfUCL(String str) {        
    for(int i=str.length()-1; i>=0; i--) {
        if(Character.isUpperCase(str.charAt(i))) {
            return i;
        }
    }
    return -1;
}

答案 1 :(得分:5)

Pattern pat = Pattern.compile("[A-Z][^A-Z]*$");
Matcher match = pat.matcher(inputString);

int lastCapitalIndex = -1;
if(match.find())
{
    lastCapitalIndex = match.start();
}
如果没有大写字母,

lastCapitalIndex将包含inputString-1中最后一个大写字母的索引。

编辑注意:解决方案以前包含一个循环,现在它将对find()进行一次调用,并且由于改进了正则表达式而没有循环。经过测试的新模式也很有效。

答案 2 :(得分:2)

您可以将字符串的每个字符与ASCII表中的大写字符范围(十进制65('A')到90('Z'))进行比较。

答案 3 :(得分:2)

在Android(Java)中,您可以使用:

String s = MyDocumentFileIsHere;
String textWithSpace = s.replaceAll("(.)([A-Z])", "$1 $2");
holder.titleTxt.setText(textWithSpace);

String的结果将是"我的文档文件在这里"

答案 4 :(得分:0)

LeetCode-检测大写字母

class Solution {
    public boolean detectCapitalUse(String word) {
        int len = word.length();

        if (word.charAt(0) >= 'A' && word.charAt(0) <= 'Z') {
            if (word.charAt(len-1) >= 'A' && word.charAt(len-1) <= 'Z') {
                for (int i = 1 ; i < len-1 ; i++) {
                    if ( word.charAt(i) < 'A' || word.charAt(i) > 'Z')
                        return false;
                }
            } else {
                for (int i = 1 ; i <= len-1 ; i++) {
                    if ( word.charAt(i) < 'a' || word.charAt(i) > 'z')
                        return false;
                }
            }
        } else {
            for (int i = 0 ; i <= len-1 ; i++) {
                if ( word.charAt(i) < 'a' || word.charAt(i) > 'z')
                    return false;
            }
        }
        return true;
    }
}