这两个功能的输出有什么不同吗?我有一个我在网站上修改的文本编辑器。编辑器目前按字符分割,但我将其切换为按单词或短语分割。
按字符拆分
string words = "word1*word2*word3*word4";
string[] collectionofWords = words.Split('*');
按字词拆分
string words = "word1***word2***word3***word4";
string[] collectionofWords = words.Split(new string[] { "***" }, StringSplitOptions.None);
即使在困难的情况下,这些功能是否完全相同?
在我上面的例子中,它们看起来是相同的,但是如果有空数据(EG1)或者如果在字符串的开头或结尾有字符(EG2),那么这些函数是否会产生相同的结果呢?
在传入相同数据的情况下,是否存在这两个函数会产生不同结果的情况?
EG1
string words = "word1*word2**word4";
string words = "word1***word2******word4";
EG2
string words = "*word1*word2*word3*word4*";
string words = "***word1***word2***word3***word4***";
答案 0 :(得分:0)
如果您害怕不同的结果,可以使用另一种方法拆分正则表达式匹配:
string words = "word1*word2*word3*word4";
string words2 = "word1***word2***word3***word4";
string[] arr = Regex.Split(words, @"\*+");
string[] arr2 = Regex.Split(words2, @"\*+");
if (arr.SequenceEqual(arr2))
Console.WriteLine("Arrays are equal");
答案 1 :(得分:0)
与此处的建议相反,并且从string class实现,这些是两种不同的方法,具有不同的依赖关系。
按设计,预期输出应与MSDN documentation相同(不考虑性能差异)。
答案 2 :(得分:-1)
简而言之:不。使用字符重载进行拆分和使用字符串重载进行拆分之间没有功能差异。但是,使用字符串进行拆分的效率应该比需要更多检查的效率略低。
据我所知,在相同的情况下它们的功能相同,因为它们基本上是相同的代码,只是进行了不同的比较。