我正在尝试在字符串中搜索大写字母的最后一个索引。我不介意使用正则表达式,但我不太熟悉它们。
int searchPattern = searchString.lastIndexOf(" ");
String resultingString = searchString.substring(searchPattern + 1);
正如您所看到的,使用我当前的代码,我正在寻找字符串中包含的最后一个空格。我需要改变它来搜索最后一个大写字母。
答案 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;
}
}