我想要统计一个字符串中某个字符出现的次数,例如我有字符串 "aaaab",我该如何计算其中字母"a"的数量?
public class OccurenceOf_Character {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println(" Enter a string");
String str = input.nextLine();
System.out.println(" Enter a character");
String character=input.next();
int l = character.length();
char c=character.charAt(0);
int count=0;
for(int i=0;i<str.length();i++)
{
if(str.charAt(i) == c)
{
count=count+1;
}
}
System.out.println(count);
}
}
您可以简单地使用这个:
String a = "i am here as junior java programmer";
Set temp = new HashSet();
char[] chararray=a.toCharArray();
Set temp=new HashSet();
for(int i=0;i<chararray.length;i++)
{
int count=0;
for (int j=0;j<chararray.length;j++) {
if (chararray[i]==chararray[j]) {
count++;
}
}
if (temp.add(chararray[i])!=false)
System.out.println("Character "+chararray[i]+" occur "+count);
}
String s1="parasanna";
StringBuffer sb=new StringBuffer();
boolean print = false;
for (int i=0; i<s1.length(); i++){
int count=1;
char c=s1.charAt(i);
sb.append(c);
for (int j=1; j<sb.length(); j++) {
char c2=sb.charAt(j-1);
if (c==c2) {
count++;
}
}
System.out.println(c+"=="+count);
}
Java 8
方法1 - 获取单个字符的出现次数
String sentence = "Aaron ate apples upon a rock";
long counted = IntStream.range(0, sentence.length())
.filter(i->sentence.charAt(i) == 'a')
.count();
System.out.println("First approach: " + counted);
方法2 - 允许指定字符
String sentence = "Aaron ate apples upon a rock";
BiFunction<String, Character, Long> counter = (s,c) -> {
return IntStream.range(0, s.length())
.filter(i->s.charAt(i) == c)
.count();
};
System.out.println("Second approach (with 'a'): " + counter.apply(sentence, 'a'));
System.out.println("Second approach (with 'o'): " + counter.apply(sentence, 'o'));
方法三 - 计算所有字符的出现次数
String sentence = "Aaron ate apples upon a rock";
Map<Character, Long> counts = IntStream.range(0, sentence.length())
.mapToObj(i->sentence.charAt(i))
.collect(Collectors.groupingBy(o->o, Collectors.counting()));
System.out.println("Third approach for every character... ");
counts.keySet().stream()
.forEach(key -> System.out.println("'" + key + "'->" + counts.get(key)));
public static void main(String[] args) throws IOException
{
//String s1="parasanna";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("enter string:");
String s1 = br.readLine();
StringBuffer sb=new StringBuffer(s1);
while(sb.length() != 0)
{
char c = sb.charAt(0);
int cnt = 0;
for(int i=0; i< sb.length(); i++)
{
if(c == sb.charAt(i))
{
cnt++;
sb.deleteCharAt(i);
i--;
}
}
System.out.println(c + " occurance is:" + cnt);
}
}
regex
标签。记住,有些人面对问题会想:“嘿,我来用正则表达式解决!”现在他们有两个问题了。 - Greg Hewgill