我有字符串
a.b.c.d
我想数一下'的出现次数。,最好是一句单句俏皮话。
(之前我把这个约束表述为“不使用循环”,以防你想知道为什么每个人都试图在不使用循环的情况下回答)。
我有字符串
a.b.c.d
我想数一下'的出现次数。,最好是一句单句俏皮话。
(之前我把这个约束表述为“不使用循环”,以防你想知道为什么每个人都试图在不使用循环的情况下回答)。
当前回答
一个更简单的解决方案是根据匹配的字符拆分字符串。
例如,
int getOccurences(字符串字符,字符串){ 字符串[]words = String .split(字符); 回来的话。长度- 1; }
这将在以下情况下返回4: getOccurences(“o”,“关于一只敏捷的棕色狐狸的事情”);
其他回答
也可以在Java 8中使用reduce来解决这个问题:
int res = "abdsd3$asda$asasdd$sadas".chars().reduce(0, (a, c) -> a + (c == '$' ? 1 : 0));
System.out.println(res);
输出:
3
虽然方法可以隐藏它,但没有循环(或递归)就无法计数。但出于性能考虑,您希望使用char[]。
public static int count( final String s, final char c ) {
final char[] chars = s.toCharArray();
int count = 0;
for(int i=0; i<chars.length; i++) {
if (chars[i] == c) {
count++;
}
}
return count;
}
使用replaceAll(即RE)听起来不是最好的方法。
如果你使用Spring框架,你也可以使用“StringUtils”类。 方法是“countOccurrencesOf”。
String[] parts = text.split(".");
int occurances = parts.length - 1;
" It's a great day at O.S.G. Dallas! "
-- Famous Last Words
好吧,这是一个了解Java的情况,特别是对Java中已经可用的集合类的基本理解。如果你看了整篇文章,除了斯蒂芬·霍金对宇宙起源的解释,达尔文关于进化论的平装书,以及吉恩·罗登贝瑞的《星际迷航》演员选择,他们为什么选择威廉·夏特纳,除了如何快速简单地做到这一点……
... 我还需要多说吗?
使用lambda函数删除所有字符进行计数 计数是前长度和后长度之差
String s = "a.b.c.d";
int count = s.length() - deleteChars.apply( s, "." ).length(); // 3
在这里找到deleteChars
如果你需要计算多个字符的出现次数,你可以一次性完成: 如。对于b c和。
int count = s.length() - deleteChars.apply( s, "bc." ).length(); // 5