문자열이 배열입니까?
string[]
요소가 포함되어 있는지 확인하기 위해 를 찾는 가장 좋은 방법은 무엇입니까? 이것은 나의 첫 번째 샷이었습니다. 그러나 아마도 내가 간과하고있는 것이있을 것입니다. 배열 크기는 200 개 요소보다 크지 않습니다.
bool isStringInArray(string[] strArray, string key)
{
for (int i = 0; i <= strArray.Length - 1; i++)
if (strArray[i] == key)
return true;
return false;
}
이미 내장 된 Contains () 메서드를 사용하십시오.
using System.Linq;
//...
string[] array = { "foo", "bar" };
if (array.Contains("foo")) {
//...
}
나는 이것이 오래되었다는 것을 알고 있지만, 나는 새로운 독자들이 제네릭과 확장 방법을 사용하여 이것을 수행하는 새로운 방법이 있다는 것을 알고 싶었다.
이 작업을 수행하는 방법에 대한 자세한 정보를 보려면 내 블로그 게시물 을 읽을 수 있지만 주요 아이디어는 다음과 같습니다.
이 확장 메서드를 코드에 추가하면 :
public static bool IsIn<T>(this T source, params T[] values)
{
return values.Contains(source);
}
다음과 같이 검색을 수행 할 수 있습니다.
string myStr = "str3";
bool found = myStr.IsIn("str1", "str2", "str3", "str4");
모든 유형에서 작동합니다 (좋은 equals 메소드를 작성하는 한). 확실히 모든 값 유형.
단순히 Array.Exists 함수 (또는 약간 더 편리한 .NET 3.5를 사용하는 경우 Contains 확장 메서드) 뒤에 있습니다.
Linq (S & G 용) :
var test = "This is the string I'm looking for";
var found = strArray.Any(x=>x == test);
또는 요구 사항에 따라
var found = strArray.Any(
x=>x.Equals(test, StringComparison.OrdinalIgnoreCase));
배열이 정렬되어 있습니까? 그렇다면 이진 검색을 할 수 있습니다. 다음은 .NET 구현입니다. 배열이 정렬 된 경우 이진 검색은 모든 반복 솔루션에 대한 성능을 향상시킵니다.
일반적으로 배열은 특정 개체가 컬렉션에 있는지 여부를 묻고 자 할 때 사용하기에 좋지 않은 데이터 구조입니다.
이 검색을 자주 실행 Dictionary<string, something>
하는 경우 배열보다는 을 사용하는 것이 좋습니다. 사전 검색은 O (1) (일정 시간)이고 배열 검색은 O (N)입니다 (배열 길이에 비례하는 시간 소요).
배열이 최대 200 개 항목 일지라도 이러한 검색을 많이 수행하면 사전이 더 빨라질 수 있습니다.
LINQ를 사용하여 배열을 반복 할 수도 있습니다. 또는 대리자를 검색하는 Find 메서드를 사용할 수 있습니다. 그러나 나는 find 메소드가 그냥 반복하는 것보다 조금 더 비싸다고 생각합니다.
위의 스레드에서 여러 번 언급했듯이 사용중인 프레임 워크에 따라 다릅니다. .Net Framework 3 이상에는 배열에 대한 .Contains () 또는 Exists () 메서드가 있습니다. 아래의 다른 프레임 워크의 경우 배열을 반복하는 대신 다음 트릭을 수행 할 수 있습니다.
((IList<string>)"Your String Array Here").Contains("Your Search String Here")
효율성에 대해 잘 모르겠습니다 ... Dave
이는 수동으로 어레이를 반복하는 것보다 빠릅니다.
static bool isStringInArray(string[] strArray, string key)
{
if (strArray.Contains(key))
return true;
return false;
}
Linq를 사용하고 싶지 않거나 단순히 사용할 수없는 경우 정적 Array.Exists(...);
함수를 사용할 수도 있습니다 .
https://msdn.microsoft.com/en-us/library/yw84x8be%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
var arr = new string[]{"bird","foo","cat","dog"};
var catInside = Array.Exists(
arr, // your Array
(s)=>{ return s == "cat"; } // the Predicate
);
When the Predicate do return true once catInside will be true as well.
참고URL : https://stackoverflow.com/questions/501194/is-string-in-array
'Programing' 카테고리의 다른 글
Ipython 노트북 / Jupyter에서 Pandas는 내가 플롯하려는 그래프를 표시하지 않습니다. (0) | 2020.08.23 |
---|---|
Python : 튜플의 값 변경 (0) | 2020.08.23 |
장치에서 sqlite 데이터베이스의 위치 (0) | 2020.08.23 |
모바일 장치에서 jQuery UI 슬라이더 터치 및 드래그 / 드롭 지원 (0) | 2020.08.23 |
하나의 프로젝트를위한 Android Studio Multi-Windows (0) | 2020.08.23 |