如何检查是否一个字符串包含超过50个字符一个字? [英] How to check if a string contains a word longer than 50 characters?
问题描述
如何检查是否一个字符串包含一个单词超过50个字符?
How to check if a string contains a word longer than 50 characters?
推荐答案
例如。 LINQ的:
string toCheck = "your string here";
bool isLong = toCheck
.Split(new [] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
.Any(s => s.Length > 50);
修改
出于好奇,与人怀疑正则表达式会快很多(我以为也是如此),我已经运行一些简单的测试。不得不承认我与结果感到惊讶:
Out of curiosity, with people suspecting Regex would be much faster (I assumed so too), I've run few simple tests. Have to admit I'm surprised with results:
的 LINQ(或precisely,string.Split和LINQ)似乎比执行编译正则表达式快了3-20倍,6-30比未编译之一。的
我在发布
模式下运行的每个解决方案的 1'000'000
迭代,检查4个采样串
I've run 1'000'000
iterations of each solution under Release
mode, checking 4 sample strings:
- 一个有没有50个字符+长字
- 一个具有字符串只有一个50字符+长字,在结束
- 一个与一个50字符+长字,在字符串中的开始时
- 一个多50个字符+长的话,S $串绕p $垫
结果可以在这里看到(LINQ VS编译正则表达式):
Results can be seen here (LINQ vs compiled regex):
LINQ [noLongWords]百万迭代。结果=假:867毫秒
LINQ [noLongWords], 1000000 iterations. Result = False: 867 ms
LINQ [oneLongWordAtEnd]百万迭代。结果=真:986毫秒
LINQ [oneLongWordAtEnd], 1000000 iterations. Result = True: 986 ms
LINQ [oneLongWordAtBegining]百万迭代。结果=真:827毫秒
LINQ [oneLongWordAtBegining], 1000000 iterations. Result = True: 827 ms
LINQ [manyLongWordsEverywhere]百万迭代。结果=真:2399毫秒
LINQ [manyLongWordsEverywhere], 1000000 iterations. Result = True: 2399 ms
正则表达式[noLongWords]百万迭代。结果=假:16714毫秒
Regex [noLongWords], 1000000 iterations. Result = False: 16714 ms
正则表达式[oneLongWordAtEnd]百万迭代。结果=真:14225毫秒
Regex [oneLongWordAtEnd], 1000000 iterations. Result = True: 14225 ms
正则表达式[oneLongWordAtBegining]百万迭代。结果=真:6483毫秒
Regex [oneLongWordAtBegining], 1000000 iterations. Result = True: 6483 ms
正则表达式[manyLongWordsEverywhere]百万迭代。结果=真:6675毫秒
Regex [manyLongWordsEverywhere], 1000000 iterations. Result = True: 6675 ms
来源$ C $ C的测试,请 rel=\"nofollow\">。
Source code for tests is available here.
当然,常规条件下(谁松潘县道 1'000'000
迭代?),不同的是不相关的,一个应该去更容易/更易于维护的解决方案。
Of course, under regular conditions (who sane runs 1'000'000
iterations?), difference is irrelevant and one should go for easier/more maintainable solution.
这篇关于如何检查是否一个字符串包含超过50个字符一个字?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!