programing

문자열 배열에서 문자열을 검색하는 방법

iphone6s 2023. 6. 16. 21:32
반응형

문자열 배열에서 문자열을 검색하는 방법

문자열 배열에서 문자열을 검색해야 합니다.나는 그 안에서 루프를 위해 아무것도 사용하고 싶지 않습니다.

string [] arr = {"One","Two","Three"};

string theString = "One"

String 변수가 ar에 있는지 확인해야 합니다.

음, 뭔가를 살펴봐야 할 것이고, 루프는 재귀보다 더 효율적입니다(꼬리 부분 재귀가 완전히 구현되지 않았기 때문에).그래서 만약 당신이 스스로를 반복하고 싶지 않다면, 다음 중 하나를 선택합니다.

bool has = arr.Contains(var); // .NET 3.5

또는

bool has = Array.IndexOf(arr, var) >= 0;

정보: var와 같은 이름은 피하십시오. 이것은 C# 3.0의 키워드입니다.

앞서 언급한 모든 방법은 내부 또는 외부에서 루프를 수행하므로 이를 구현하는 방법은 실제로 중요하지 않습니다.대상 문자열의 모든 참조를 찾는 또 다른 예

       string [] arr = {"One","Two","Three"};
       var target = "One";
       var results = Array.FindAll(arr, s => s.Equals(target));

문자열이어야 합니까? 목록<String>을 사용하면 필요한 정보를 얻을 수 있습니다.

List<String> testing = new List<String>();
testing.Add("One");
testing.Add("Two");
testing.Add("Three");
testing.Add("Mouse");
bool inList = testing.Contains("Mouse");
bool exists = arr.Contains("One");

저는 Array를 사용하는 것이 더 좋다고 생각합니다.배열보다 존재합니다.모두 찾기.

꽤 간단합니다.문자열 배열에서 문자열을 검색할 때 항상 이 코드를 사용합니다.

string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
int pos = Array.IndexOf(stringArray, value);
if (pos > -1)
{
    return true;
}
else
{
    return false;
}

배열이 정렬된 경우 이진 검색을 사용할 수 있습니다.이 작업은 O(log n) 작업이므로 루프하는 것보다 빠릅니다.여러 개의 검색을 적용해야 하고 속도가 문제가 되는 경우 사용하기 전에 정렬(또는 복사본)할 수 있습니다.

IList를 구현하는 각 클래스에는 포함 메서드(개체)가 있습니다.시스템도 마찬가지입니다.배열.

왜 "나는 루프를 사용하고 싶지 않습니다"라는 금지가 있습니까?그것이 가장 확실한 해결책입니다.분명해질 기회가 주어졌을 때, 그것을 가져가세요!

참고로 다음과 같은 호출이 있습니다.arr.Contains(...)여전히 반복될 것입니다. 반복을 작성한 사람은 당신이 아닐 것입니다.

검색하기 쉬운 대체 표현을 고려해 보셨습니까?

  • 양호한 Set 구현은 잘 수행될 것입니다(HashSet, TreeSet 또는 이와 동등한 로컬).
  • 확신할 수 있다면,arr정렬되면 이진 검색을 사용할 수 있습니다(반복 또는 루프가 필요하지만 직선 검색만큼 자주 사용하지는 않음).

어레이 유형의 찾기 방법을 사용할 수 있습니다..NET 3.5 이상 버전.

public static T Find<T>(
    T[] array,
    Predicate<T> match
)

다음은 몇 가지 예입니다.

// we search an array of strings for a name containing the letter “a”:
static void Main()
{
  string[] names = { "Rodney", "Jack", "Jill" };
  string match = Array.Find (names, ContainsA);
  Console.WriteLine (match);     // Jack
}
static bool ContainsA (string name) { return name.Contains ("a"); }

다음은 익명의 방법으로 단축된 동일한 코드입니다.

string[] names = { "Rodney", "Jack", "Jill" };
string match = Array.Find (names, delegate (string name)
  { return name.Contains ("a"); } ); // Jack

람다 식을 사용하면 다음과 같이 더 짧아집니다.

string[] names = { "Rodney", "Jack", "Jill" };
string match = Array.Find (names, n => n.Contains ("a"));     // Jack

처음에, 저는 이런 것을 생각해 낼 수 있었습니다(그러나 그것은 의사 코드이며 당신이 .NET 내장 라이브러리를 사용할 수 없다고 가정합니다).약간의 수정과 재고가 필요할 수도 있지만, 시작하기에 충분할까요?

int findString(String var, String[] stringArray, int currentIndex, int stringMaxIndex)
    {
    if currentIndex > stringMaxIndex 
       return (-stringMaxIndex-1);
    else if var==arr[currentIndex] //or use any string comparison op or function
       return 0;
    else 
       return findString(var, stringArray, currentIndex++, stringMaxIndex) + 1 ;
    }



    //calling code
    int index = findString(var, arr, 0, getMaxIndex(arr));

    if index == -1 printOnScreen("Not found");
    else printOnScreen("Found on index: " + index);

C#에서 ArrayList를 사용할 수 있는 경우 Contains 메서드를 사용할 수 있습니다. 이 메서드는 부울을 반환합니다.

if MyArrayList.Contains("One")

다음을 통해 요소 존재를 확인할 수 있습니다.

arr.Any(x => x == "One")

그것은 오래된 것이지만, 이것이 제가 하는 방식입니다.

enter code here Array.var 과결 = 배열. " 기이(찾름, 요소 => 요소 == "하나");

아무도 사용을 제안하지 않았다는 것이 놀랍습니다.Array.IndexOf방법.

실로제로▁indeed실.Array.IndexOf에는 두이 있습니다.

  • 배열에 요소가 포함되어 있는지 검색할 수 있습니다.
  • 인덱스는 동시에 배열로 가져옵니다.
int stringIndex = Array.IndexOf(arr, theString);
if (stringIndex >= 0)
{
    // theString has been found
}

인라인 버전:

if (Array.IndexOf(arr, theString) >= 0)
{
    // theString has been found
}

용사를 합니다.Contains()

string [] SomeArray = {"One","Two","Three"};
bool IsExist = SomeArray.Contains("One");
Console.WriteLine("Is string exist: "+ IsExist);

용사를 합니다.Find()

string [] SomeArray = {"One","Two","Three"};
var result = Array.Find(SomeArray, element => element == "One");
Console.WriteLine("Required string is: "+ result);

단순하고 전통적인 또 다른 방법은 초보자가 논리를 구축하는 데 매우 유용합니다.

string [] SomeArray = {"One","Two","Three"};
foreach (string value in SomeArray) {
    if (value == "One") { 
        Console.WriteLine("Required string is: "+ value);
    }
 }

언급URL : https://stackoverflow.com/questions/264962/how-to-search-a-string-in-string-array

반응형