C# 检查字符串中输入计数中的字符

C# 检查字符串中输入计数中的字符,c#,.net,C#,.net,我试图计算一个字符串中出现的一位数。 我的意思是,用户在多行文本框中键入一个句子,然后在单独的文本字段中键入一个字母。我需要检查一个字母在句子中出现了多少次 目前,我已经通过使用这个函数输入了两个文本字段 string InputSingleline = SingleLineTxtBox.Text; string InputMultiline = MultiLineTxtBox.Text; 我试着用这个来计算inputsingeline中输入的发生率,但它不起作用 int Count = In

我试图计算一个字符串中出现的一位数。 我的意思是,用户在多行
文本框中键入一个句子,然后在单独的文本字段中键入一个字母。我需要检查一个字母在句子中出现了多少次

目前,我已经通过使用这个函数输入了两个文本字段

string InputSingleline = SingleLineTxtBox.Text;
string InputMultiline = MultiLineTxtBox.Text;
我试着用这个来计算
inputsingeline
中输入的发生率,但它不起作用

int Count = InputMultiline.Count(f => f == SingleLineTxtBox);

首先,您应该计算
inputsingeline
而不是
SingleLineTxtBox
的出现次数,因为您已经将
inputsingeline
设置为
SingleLineTxtBox.Text
。其次,
InputSingleline
是一个只有一个字符的字符串,因此您需要使用类似的方法从该字符串返回该字符:

int Count = InputMultiline.Count(f => f == InputSingleline.FirstOrDefault());

注:只有在.NET 3.5中

@S.Akbari中,您才可以这样做:首先,您没有试图计算
InputSingleLine
的出现次数-您试图计算
SingleLineTxtBox
的出现次数,这毫无意义。接下来,您应该尝试计数字符的出现次数,而不是字符串-因此您需要类似于
characterToFind=SingleLineTxtBox.Text[0](在检查是否存在单个字符后)。然后可以使用
intcount=InputMultiLine.count(f=>f==characterToFind)。另一方面,我强烈建议尽早学习C#命名约定,以避免养成坏习惯。@JonSkeet但是如果
SingleLineTxtBox
为空怎么办?使用characterToFind=SingleLineTxtBox.Text[0]
将抛出
索引超出了数组的边界。
@S.Akbari:因此我的评论中有“在检查是否有一个字符后”的部分。@JonSkeet Right。我没有注意到括号内的这部分注释。使用
FirstOrDefault
意味着如果文本框为空,它将查找U+0000。当然,最好只是检测到这一点,而不是看。虽然这段代码可能会回答这个问题,但最好包含更多的上下文/解释。(顺便说一句,我没有投反对票)。
string pattern = string.Format("^{0}$", InputSingleline);
int count = Regex.Matches(InputMultiline, pattern).Count;
string pattern = string.Format("^{0}$", InputSingleline);
int count = Regex.Matches(InputMultiline, pattern).Count;