我在大学学习Java,我需要写一个静态int countCapitals(String s)方法,返回字符串s中有多少个单词以大写字母开头。
大写字母是UPPERCASE_LETTER类型或TITLECASE_LETTER类型的字符(Character)。单词是由一个或多个空格、字符、符号或标点符号分隔的字母或数字序列。
New.countCapitals("亲爱的朋友们,你们好!这里—以大写字母开头的单词")== 6
我只允许在字符串和字符类中使用方法。(无正则表达式)
public class New {
static int countCapitals(String s) {
int c = 0;
if (Character.isUpperCase(s.charAt(0)) == true
|| Character.isTitleCase(s.charAt(0)) == true) {
c++;
}
for (int i = 0; i < s.length() - 1; i++) {
if (Character.isLetter(s.charAt(i)) == false
&& Character.isLetter(s.charAt(i + 1)) == true) {
if (Character.isUpperCase(s.charAt(i + 1)) == true
|| Character.isTitleCase(s.charAt(i + 1)) == true) {
c++;
}
}
}
return c;
}
}
这是我的代码,但它在某些测试中不起作用。测试是关闭的,所以我不知道是哪些测试。你能告诉我哪里出了问题以及如何修复它吗?
Java的内置正则表达式包是我要走的路:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WordsStartingWithCapitalLetter {
public static void main(String[] args) {
// Test 1 -- simple sentence
String s = "The Quick Brown Fox jumps over the lazy Dog";
System.out.println("\ninput string: " + s);
System.out.println("capitalized words:" + getCountOfWordsWithInitialCap(s));
// Test 2 -- punctuation and newlines
s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n"
+ "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation\n"
+ "ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit\n"
+ "in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat\n"
+ "non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
System.out.println("\ninput string: " + s);
System.out.println("capitalized words:" + getCountOfWordsWithInitialCap(s));
// Test 3 -- Scottish sirnames and hyphens
s = "The quick brown MacGavin jumps over the lazy MacGowan-dog";
System.out.println("\ninput string: " + s);
System.out.println("capitalized words:" + getCountOfWordsWithInitialCap(s));
}
private static final Pattern WORD_WITH_CAP_REGEX = Pattern.compile("([A-Z][-A-Za-z]*)");
private static int getCountOfWordsWithInitialCap(String s) {
int count = 0;
Matcher matcher = WORD_WITH_CAP_REGEX.matcher(s);
while(matcher.find()) {
count++;
String capitalizedWord = matcher.group(1);
System.out.println("\t"+count+" : "+capitalizedWord); // remove if you don't want to see the matches
}
return count;
}
}
问题内容: 如何使用MySQL查询来计算大写字母?我现在正在尝试 但这给我一个错误的说法: 我猜,我不允许在AGAINST子句中使用列表,这很烂 那么,有没有办法实现这一目标? 问题答案: 试试这个功能- 例子:
我有一个字符串列表,每个字符串大约有10个句子。我希望从每个字符串中找到以大写字母开头的所有单词。优选地在句子中的第一个词之后。我正在使用re。我要做这件事。当我手动设置string=''时,我不会遇到任何问题,但是当我尝试使用for循环来循环列表中的每个条目时,我会得到不同的输出。 输出: 当我手动输入字符串值时 输出: 但我似乎无法编写一个for循环来正确打印列表中5项的输出。有什么想法吗?
问题内容: 哟,所以我试图制作一个程序,可以接受用户输入的字符串,例如:“一次一次”,然后报告该字符串包含多少个大写和小写字母: 输出示例:字符串具有8个大写字母,字符串具有5个小写字母,即时消息应该使用字符串类而不是数组,有关如何开始使用此字符串的任何提示?在此先感谢,这是我到目前为止所做的:D! 问题答案: 只需创建发现小写或大写字母时递增的计数器,如下所示:
问题内容: 因此,我试图在用户输入的字符串中查找所有大写字母,但始终出现此运行时错误: 我觉得很愚蠢,但我无法弄清楚,Oracle甚至在有关java.lang.StringIndexOutOfBoundsException的页面上谈论了charAt。 这是我的代码,用于查找大写字母并打印它们: 我非常感谢您的任何投入和/或帮助。 问题答案: 应该 请记住,数组索引从零开始。 字符串长度返回 字符串
问题内容: 我正在做一个作业,在该作业中,我必须编写程序以读取用户的字符串,并打印出字符串中出现次数的字母。 例如,“ Hello world”应该打印出“ h = 1 e = 1 l = 3 o = 2 …等”,但是我只写“ hello world”和字母总数。 我不能使用hashmap函数,只能使用数组。有人可以给我一两个提示,提示如何从下面的书面代码继续进行操作以获得我的首选功能?我不完全了
我有这个正则表达式: 搜索: 替换为: 这将把所有单词的第一个字母替换成大写字母。例如: