.net 在C#2.0中比较字符串和字符串数组的最快方法

kiz8lqtg  于 2022-11-26  发布在  .NET
关注(0)|答案(5)|浏览(154)

在C#2.0中比较字符串和字符串数组的最快方法是什么

wf82jlnq

wf82jlnq1#

您想要哪种比较?您想要知道指定的字串是否在数组中吗?

bool targetStringInArray = array.Contains(targetString);

是否需要一个比较值数组(正、负、零)?

var comparisons = array.Select(x => targetString.CompareTo(x));

如果你要检查包含性(即第一个选项),并且你要对多个字符串进行检查,那么从数组中构建一个HashSet<string>可能会更好:

var stringSet = new HashSet<string>(array);

if (stringSet.Contains(firstString))  ...
if (stringSet.Contains(secondString)) ...
if (stringSet.Contains(thirdString))  ...
if (stringSet.Contains(fourthString)) ...
hts6caw3

hts6caw32#

你的意思是查看字符串是否在数组中?我不记得数组是否支持.Contains()方法,所以如果不支持,创建一个List< string >,通过AddRange()将数组添加到列表中,然后调用list.Contains({string to compare}).将返回一个布尔值,指示字符串是否在数组中。

5gfr0r5j

5gfr0r5j3#

如果您对单个数组多次执行此操作,则应该对数组进行排序和二进制搜索:

Array.Sort(array);
int index = Array.BinarySearch(array, input);
// if (index < 0) 
//      does not exists, "items > ~index" are larger and "< ~index" are smaller
// otherwise, "items > index" are larger and "< index" are smaller.

否则就天真地检查整个阵列:

bool exists = Array.IndexOf(array, input) >= 0;
wa7juj8i

wa7juj8i4#

如果你要求查看一个列表是否是另一个列表的一部分,那么你可以使用Contains()。
比如说

List<string> list1 = new List<string>(){"1", "2"};
List<string> list2 = new List<string>(){"1", "2", "3"};

list2.Contains(list1) //will be True, but not vice versa.

也就是说,如果你想知道的不是部分匹配,而是完全匹配,你可以使用Except(),并检查余数。

if(list2.Except(list1).Length == 0) //will return false.
30byixjq

30byixjq5#

//从源列表中获取数据List checklist =目录.GetFiles(源路径,“.",搜索选项.所有目录).Where(x =〉x.ToLower().EndsWith(“apk”)).ToList();

//get date from a text file
           List<string>  ls = ReadFile();

            foreach(string file in checklist)
            {
                //get file name
                string filename = Path.GetFileName(file);

                string TargetLocation = Path.Combine(TargetPath, filename);

                //now compare single string to a list 
                //it give in true and false 
                if(ls.Contains(filename)) 
                {
                    //do your task
                    //File.Copy(file, TargetLocation);
                }
            }

相关问题