1

我正在创建一个计算字符串中所有出现的笑脸的方法。(我已经创建了另一种查询数据库以获取笑脸字符串的方法。)

我希望这种方法能够检测到:-):-)两次事件。这是我尝试过的:

public static int Occurrences(string input)
{
    int count = 0;

    Smileys list = SmileyDAL.GetAll();

    foreach (var item in list)
    {
        count += new Regex(item.Key).Matches(input).Count;

    }

    return count;
} 

但是调用此方法时出现此错误:

解析“;-)”- ) 太多。

4

3 回答 3

4

您需要转义)字符,替换:

count += new Regex(item.Key).Matches(input).Count;

和:

count += new Regex(Regex.Escape(item.Key)).Matches(input).Count;
于 2013-01-15T13:15:01.800 回答
2
new Regex(Regex.Escape(item.Key))

您必须转义搜索字符串中的正则表达式字符。

于 2013-01-15T13:15:50.423 回答
0

这是另一个不使用正则表达式的选项

public static int Occurences(string input)
{
    // Put all smileys into an array.
    var smileys = SmileyDAL.GetAll().Select(x => x.Key).ToArray();

    // Split the string on each smiley.
    var split = input.Split(smileys, StringSplitOptions.None);

    // The number of occurences equals the length less 1.
    return split.Length - 1;
} 
于 2013-01-15T13:21:37.530 回答