Fastest way to compare a string with an array of strings in C#2.0

后端 未结 4 1468
南旧
南旧 2020-12-30 04:07

What is the fastest way to compare a string with an array of strings in C#2.0

相关标签:
4条回答
  • 2020-12-30 04:27

    You mean to see if the string is in the array? I can't remember if arrays support the .Contains() method, so if not, create a List< string >, add your array to the list via AddRange(), then call list.Contains({string to compare}). Will return a boolean value indicating whether or not the string is in the array.

    0 讨论(0)
  • 2020-12-30 04:38

    //get data in list from source List checklist = Directory.GetFiles(SourcePath, ".", SearchOption.AllDirectories).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);
                    }
                }
    
    0 讨论(0)
  • 2020-12-30 04:40

    If you are doing this many times with a single array, you should sort the array and binary search it:

    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.
    

    Otherwise just check the whole array naively:

    bool exists = Array.IndexOf(array, input) >= 0;
    
    0 讨论(0)
  • 2020-12-30 04:46

    What kind of comparison do you want? Do you want to know if the given string is in the array?

    bool targetStringInArray = array.Contains(targetString);
    

    do you want an array of comparison values (positive, negative, zero)?

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

    If you're checking for containment (i.e. the first option) and you're going to do this with multiple strings, it would probably be better to build a HashSet<string> from the array:

    var stringSet = new HashSet<string>(array);
    
    if (stringSet.Contains(firstString))  ...
    if (stringSet.Contains(secondString)) ...
    if (stringSet.Contains(thirdString))  ...
    if (stringSet.Contains(fourthString)) ...
    
    0 讨论(0)
提交回复
热议问题