C# 如何检查某个字符串在另一个字符串中出现的次数?
我最初从另一个人的问题答案中提取了这段代码,但它似乎不适用于文本框 我得到的错误是:C# 如何检查某个字符串在另一个字符串中出现的次数?,c#,string,count,C#,String,Count,我最初从另一个人的问题答案中提取了这段代码,但它似乎不适用于文本框 我得到的错误是: string containsCharacter = textBox1.Text; string testString = "test string contains certain characters"; int count = testString.Split(containsCharacter).Length - 1; 我更喜欢修复这段代码,而不是使用像LINQ这样的其他东西,但如果没有修复这段代码的
string containsCharacter = textBox1.Text;
string testString = "test string contains certain characters";
int count = testString.Split(containsCharacter).Length - 1;
我更喜欢修复这段代码,而不是使用像LINQ这样的其他东西,但如果没有修复这段代码的方法,我会接受它
The best overloaded method match for 'string.Split(params char[])' has some invalid arguments
Argument 1: cannot convert from 'string' to 'char[]'
这个例子将返回6
此示例将返回6。您可以调用
字符串上的tocharray
,使其成为字符[]
,如下所示:
string containsCharacter = "t";
string testString = "test string contains certain characters";
int count = testString.Count(x => x.ToString() == containsCharacter);
由于Split
将字符作为param
,因此可以通过直接列出要计数的字符来重写此操作,如下所示:
int count = testString.Split(containsCharacter.ToCharArray()).Length - 1;
您可以在字符串上调用tocharray
,使其成为char[]
,如下所示:
string containsCharacter = "t";
string testString = "test string contains certain characters";
int count = testString.Count(x => x.ToString() == containsCharacter);
由于Split
将字符作为param
,因此可以通过直接列出要计数的字符来重写此操作,如下所示:
int count = testString.Split(containsCharacter.ToCharArray()).Length - 1;
您使用的Split
版本需要一个字符作为输入。这是字符串的版本:
int count = testString.Split(',', ';', '-').Length - 1;
使用此代码,count
将是:如果textBox1,则为1。如果文本包含“test”,则为6,如果包含“t”,则为6。也就是说,它可以处理任何字符串(其长度可以是一个,作为单个字符,或根据需要而定)。您使用的拆分版本需要一个字符作为输入。这是字符串的版本:
int count = testString.Split(',', ';', '-').Length - 1;
使用此代码,count
将是:如果textBox1,则为1。如果文本包含“test”,则为6,如果它包含“t”,则为6。也就是说,它可以处理任何字符串(其长度可以是一个,作为单个字符,或根据需要而定)。您可以遍历这些字符
"this string. contains. 3. dots".Split(new[] {"."}, StringSplitOptions.None).Count() - 1
您可以遍历这些字符
"this string. contains. 3. dots".Split(new[] {"."}, StringSplitOptions.None).Count() - 1
编辑:
在更仔细地阅读代码后,我建议您这样做,您应该将您的问题重新表述为
“检查某个字符串在另一个字符串中出现的次数:”
比赛是2场
我最初的帖子回答了您的实际问题“字符串中某个字符的出现”:
数到三 编辑:
在更仔细地阅读代码后,我建议您这样做,您应该将您的问题重新表述为
“检查某个字符串在另一个字符串中出现的次数:”
比赛是2场
我最初的帖子回答了您的实际问题“字符串中某个字符的出现”:
数到三 @jeroenvanevel该字符串中某个字符的出现次数。@puretppc-您应该将char作为参数而不是字符串来传递。@RohitVats是的,它终于起作用了。太好了。有时错误也是不言自明的。倾听他们也可以帮助你解决问题。:)然后使用其他重载,该重载接受string[]
-int count=testString.Split(新字符串[]{containschracter},StringSplitOptions.None)。长度-1
@jeroenvanevel该字符串中某个字符的出现次数。@puretppc-您应该将char作为参数传递,而不是字符串。@RohitVats是的,它终于起作用了。太好了。有时错误也是不言自明的。倾听他们也可以帮助你解决问题。:)然后使用其他重载,该重载接受string[]
-int count=testString.Split(新字符串[]{containschracter},StringSplitOptions.None)。长度-1如果你想知道“test”在testString中出现的次数,那该怎么办?你的代码会查找字符(这就是X),除非你能找到一个字符是“test”,否则它恐怕不会工作。然后我会使用正则表达式。类似于Regex.Matches(testString,“test”)。对字符串进行计数并正确地转义测试。当然,还有很多选择。但是OP的原始代码是一个非常好的代码(Split),尽管只限于字符,那么为什么不将其调整为字符串(或者将输入字符串转换为字符以避免错误)?但如果您认为这样更好,您可以提出任何解决方案,包括基于正则表达式的补码。如果您想知道“test”出现在testString中的次数,该怎么办?您的代码会查找字符(这就是X),除非您能找到一个字符为“test”,恐怕不行,那我就用正则表达式代替。类似于Regex.Matches(testString,“test”)。对字符串进行计数并正确地转义测试。当然,还有很多选择。但是OP的原始代码是一个非常好的代码(Split),尽管只限于字符,那么为什么不将其调整为字符串(或者将输入字符串转换为字符以避免错误)?但是,如果您认为这更好,您可以提出任何解决方案,包括基于正则表达式的补充。在LINQ时代,除了在狭窄的场景中或在性能非常关键的情况下,手动计数是过时的。您的代码提醒了我在c#2.0
中的编码方式,之后我更喜欢var count=s.count(x=>x='a')
@SriramSakthivel我是旧代码的最大粉丝之一;但是Split也是一个古老的代码(这个答案,就像现在一样,只能处理单个字符,这使得它有点限制):@varocarbas是的,我同意你的看法。另一方面,split不是一个旧式代码
即使在今天,对于split,您也必须使用split,但我看不到任何替代方法。:)@puretppc计算字符串匹配,如“AN”,我将使用varocarbas在回答中建议的方法。value.Split(新字符串[]{“AN”},StringSplitOptions.None).Count()-1在LINQ时代,除了在狭窄的场景中或在性能至关重要的时候,手动计数是过时的。您的代码提醒了我在c#2.0
中的编码方式,后来我更喜欢var Count=s.Count(x=>x='A')
@SriramSakthivel我是旧代码的最大粉丝之一;但是Split也是一个古老的代码(这个答案,就像现在一样,只能处理单个字符,这使得它有点限制):@varocarbas是的,我同意你的看法。在ot上