【问题标题】:Java built-in method - occurrences of a char in a stringJava 内置方法 - 字符串中出现的字符
【发布时间】:2014-03-01 16:35:45
【问题描述】:

是否有 java 内置方法来计算字符串中 char 的出现次数? 例如: s= "Hello My name is Joel" l 的出现次数为 3

谢谢

【问题讨论】:

  • 我不这么认为。您可以从字符串 (toCharArray()) 遍历 char 数组并使用 Map 进行计数。如果 Key 存在,则向上计数整数,否则 startvalue 为 1 的新条目。如果仅搜索单个字符...使用 REGEX:stackoverflow.com/questions/6100712/…
  • 一个番石榴的好申请Multiset
  • @RC:如果你要使用 Guava,不妨在单行中使用 CharMatcher.is('l').countIn(string)。
  • @LouisWasserman 如果您只需要计数 l 肯定

标签: java string


【解决方案1】:

没有这样的方法,但你可以这样做:

String s = "Hello My name is Joel";
int counter = 0;
for( int i=0; i<s.length(); i++ ) {
    if( s.charAt(i) == 'l' ) {
        counter++;
    } 
}

(来自Simple way to count character occurrences in a string的代码)

【讨论】:

    【解决方案2】:

    如果您想计算多个字符在特定字符串中出现的次数,那么将字符与其在字符串中出现的次数进行映射将是一个不错的选择。以下是在这种情况下如何实现解决方案:

    import java.util.HashMap;
    import java.util.Map;
    
    public class CharacterMapper
    {
      private Map<Character, Integer> charCountMap;
    
      public CharacterMapper(String s)
      {
        initializeCharCountMap(s);
      }
    
      private void initializeCharCountMap(String s)
      {
        charCountMap = new HashMap<>();
        for (int i = 0; i < s.length(); i++)
        {
          char ch = s.charAt(i);
          if (!charCountMap.containsKey(ch))
          {
            charCountMap.put(ch, 1);
          }
          else
          {
            charCountMap.put(ch, charCountMap.get(ch) + 1);
          }
        }
      }
    
      public int getCountOf(char ch)
      {
        if (charCountMap.containsKey(ch))
          return charCountMap.get(ch);
        return 0;
      }
    
      public static void main(String[] args)
      {
        CharacterMapper ob = new CharacterMapper("Hello My name is Joel");
        System.out.println(ob.getCountOf('o')); // Prints 2
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 2020-02-26
      • 1970-01-01
      • 2015-10-05
      相关资源
      最近更新 更多