4
A
回答
3
这取决于您的具体要求。如果你真的需要在一个句子中找到单词(不是子字符串),那么我相信可以用一个命名正则表达式比使用IndexOf加上所有额外的逻辑来更加简洁和更明确地表达,以确保你实际上只是一个完整的单词。另一方面,如果您只是在寻找一个子字符串,那么IndexOf在性能和可读性方面远远优于其他字符。
6
如果在没有正则表达式的情况下执行某些操作非常简单,那几乎总是会更便宜。 String.IndexOf
(或String.Contains
)是,肯定是的一个例子。
1
就最佳实践而言,string.IndexOf
对阅读代码的人来说可能更为明显。人们的大脑在看到正则表达式时倾向于关闭,所以像IndexOf
这样直截了当的事情会让他们的大脑开放。
至于性能,这取决于很多事情,只能通过基准测试来正确回答。
3
这绝不是衡量事物最科学的方法,但是这里有一点源代码表明(在非常特定的约束下)正则表达式比indexof慢大约4倍。
class Program
{
private const string Sentence = "The quick brown fox jumps over the lazy dog";
private const string Word = "jumps";
static void Main(string[] args)
{
var indexTimes = new List<long>();
var regexTimes = new List<long>();
var timer = new Stopwatch();
for (int i = 0; i < 1000; i++)
{
timer.Reset();
timer.Start();
Sentence.IndexOf(Word);
timer.Stop();
indexTimes.Add(timer.ElapsedTicks);
}
Console.WriteLine(indexTimes.Average());
for (int i = 0; i < 1000; i++)
{
timer.Reset();
timer.Start();
Regex.Match(Sentence, Word);
timer.Stop();
regexTimes.Add(timer.ElapsedTicks);
}
Console.WriteLine(regexTimes.Average());
Console.ReadLine();
}
}
相关问题
- 1. 什么是好的正则表达式?
- 2. 什么是正确的正则表达式该字符串
- 3. Flex/Yacc:SQL字符串文字的正则表达式是什么?
- 4. 什么时候最好使用正则表达式而不是基本的字符串分割/子串处理?
- 5. 正则表达式vs Tryparse什么是最好的性能
- 6. 什么是我的字符串准确的正则表达式?
- 7. 什么是字符串的正则表达式
- 8. 什么是空终止ASCII字符串的正则表达式?
- 9. 正则表达式 - 匹配外来字符的正则表达式是什么?
- 10. 这个正则表达式字符串是什么意思?
- 11. 正则表达式的正则表达式的Java字符串
- 12. 匹配字母数字6字符串的正则表达式是什么?
- 13. JMeter的正则表达式不处理字符串变量和“$”
- 14. 什么是没有管道(|)字符的字符串的正则表达式?
- 15. 如何处理通过正则表达式这个字符串
- 16. 递归正则表达式处理嵌套字符串{|和|
- 17. 需要python正则表达式来处理子字符串
- 18. JavaScript字符串处理可能正则表达式
- 19. 如何使用正则表达式类来处理字符串
- 20. 如何处理正则表达式返回字符串?
- 21. 正则表达式正则表达式匹配字符串
- 22. 处理临时字符串的更好方法是什么?
- 23. 正则表达式 - 数字字符串的更换部分
- 24. 是否有R函数来转义正则表达式字符的字符串
- 25. 如何使用正则表达式来处理字符串中的数字?
- 26. 正则表达式处理
- 27. valdiating字符串上的正则表达式字符串数组
- 28. 什么是正则表达式来匹配重写规则的空字符串?
- 29. 什么是只有整数字符串的Java正则表达式?
- 30. 正则表达式Scala的字符串
最佳做法不基于语法的可读性。而正则表达式肯定比常规字符串函数更昂贵。 – 2011-02-09 22:31:29
@Nicklamort那么什么是“最佳实践”? – CanSpice 2011-02-09 22:34:33