2012-12-19 74 views
6

基本上,我想统计字符串中特定字符的集合。 换句话说,我需要计算所有的字母和数字,而不是其他的。 但我似乎无法找到正确的(正则表达式)语法。 这是我有...如何统计字符串中特定字符的集合

public double AlphaNumericCount(string s) 
{ 
    double count = Regex.Matches(s, "[A-Z].[a-z].[0-9]").Count; 
     return count; 
} 

我一直在四处寻找,但不能似乎发现了什么,让一个以上的字符集。 再一次,我不知道的语法也许应该是 “[A-Z]/[a-z]/[0-9]” 什么的。任何人,对我来说都很简单 - 这是我第一天使用Regex。

谢谢。

回答

3

如果你想避免正则表达式,你可以简单地通过字符串中的字符进行迭代,并检查它们是否是一个字母或数字使用Char.IsLetterOrDigit

public int AlphaNumericCount(string s) 
{ 
    int count = 0; 

    for(int i = 0; i < s.Length; i++) 
    { 
     if(Char.IsLetterOrDigit(s[i])) 
      count++; 
    } 

    return count; 
} 
+0

哦,好一个。谢谢:) – Sizza

+0

没问题。正则表达式可能看起来更整洁,但根据字符串/调用次数的长度,它们*可能会更慢。 – keyboardP

4

如果不需要使用正则表达式的,有一个简单的,替代的解决方案:

return s.ToCharArray().Count(c => Char.IsNumber(c) || Char.IsLetter(c)); 
+1

'ToCharArray()'在这里没有必要。 'string'已经实现了'IEnumerable ' –

相关问题