我想在字符串中获取大写字符并且还有计数
package TEST;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class case_test {
public static void main(String agrs[]) {
String str1 = "", regx;
regx = "[A-Z]+";
Scanner sc = new Scanner(System.in);
Pattern pattern = Pattern.compile(regx);
Matcher matcher = pattern.matcher(str1);
int count = 0;
System.out.println("ENTER A SENTENCE");
str1 = sc.nextLine();
while (matcher.find())
System.out.println(str1.substring(matcher.start(), matcher.end())
+ "*");
count++;
}
}
我想获得字符串中的大写字符以及它们的数量。
答案 0 :(得分:2)
您可以尝试:
String uppers = str1.replaceAll("[^A-Z]", "");
int length = uppers.length();
答案 1 :(得分:0)
此:
String str1 = "";
Matcher matcher = pattern.matcher(str1);
int count = 0;
System.out.println("ENTER A SENTENCE");
str1 = sc.nextLine();
while (matcher.find())
不会像你想象的那样奏效。你匹配空字符串。你以后再重新str1
并不重要。
移动线
Matcher matcher = pattern.matcher(str1);
在while循环之前,当您的str1
变量引用您真正想要匹配的字符串时,例如用户的输入。
此外,您希望从正则表达式中删除+
符号,因为它会一次性连续显示大写字母序列。
答案 2 :(得分:0)
您可以使用originalString& amp;来使用字符串交集(Intersection of two strings in Java)。 originalString.toUpperCase()。
答案 3 :(得分:0)
只需使用旧的方法,使用String的toCharArray
方法转换char数组中的字符串,然后简单地迭代数组。如果char在65到90的范围内,则检查每次迭代[A的ASCII值是65,Z是90]。每个真实案例的增量。