Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个字符串在另一个字符串(文本框)VB.NET中出现多少次_Vb.net_String_Textbox_Count_Find - Fatal编程技术网

一个字符串在另一个字符串(文本框)VB.NET中出现多少次

一个字符串在另一个字符串(文本框)VB.NET中出现多少次,vb.net,string,textbox,count,find,Vb.net,String,Textbox,Count,Find,如何获取字符串在文本框中出现的次数 我以为find函数会返回找到的次数,但它似乎返回了它的位置。Regex.Matches(textBox1.Text,Regex.Escape(inputString)).Count您可以调用Split,如下: (" " + textBox1.Text + " ").Split(New String() { inputString }, StringSplitOptions.None); 或者,您可以继续调用IndexOf,startIndex等于上一次调用的

如何获取字符串在文本框中出现的次数


我以为find函数会返回找到的次数,但它似乎返回了它的位置。

Regex.Matches(textBox1.Text,Regex.Escape(inputString)).Count
您可以调用
Split
,如下:

(" " + textBox1.Text + " ").Split(New String() { inputString }, StringSplitOptions.None);

或者,您可以继续调用
IndexOf
,startIndex等于上一次调用的返回值+1,直到它返回-1。

我想知道这个函数的性能,但是+1表示清晰的简单代码。
Import System.Text.RegularExpressions
Regex为简单搜索提供了最佳性能,特别是如果使用
Compiled
标志并预创建regex对象。但我从未对此进行过基准测试。如果
inputString
包含特殊字符,这将无法按预期工作。你需要调用
Regex.Escape
@Jonathan:如果你使用这个,把它改成
Regex.Matches(textBox1.Text,Regex.Escape(inputString)).Count
。很抱歉,这个速度大约是Regex的两倍,经过测试和基准测试。即使不预编译正则表达式,在每次调用时使用regex.Escape,正则表达式的速度仍然是Split way的两倍,此外,您还可以从正则表达式中发现其他信息,例如匹配项在原始字符串中的位置。我必须说,这非常令人惊讶。如果模式和文本事先未知或未编制索引,那么几乎没有什么东西可以比得上实现良好的正则表达式搜索引擎的性能。实际上,在这种情况下,使用instr的循环比regex快约30%。