如何检查是否一个字符串包含超过50个字符一个字? [英] How to check if a string contains a word longer than 50 characters?

查看:222
本文介绍了如何检查是否一个字符串包含超过50个字符一个字?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何检查是否一个字符串包含一个单词超过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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆