문자열 배열에 값이 포함되어 있는지 확인하고 포함되어 있으면 위치 가져오기
다음 문자열 배열이 있습니다.
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
나는 결정하고 싶습니다.stringArray
포함하다value
그렇다면 배열에서 위치를 찾고 싶습니다.
루프를 사용하고 싶지 않습니다.제가 어떻게 하면 좋을지 누가 알려주실 수 있나요?
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
int pos = Array.IndexOf(stringArray, value);
if (pos > -1)
{
// the array contains the string and the pos variable
// will have its position in the array
}
var index = Array.FindIndex(stringArray, x => x == value)
우리는 또한 사용할 수 있습니다.Exists
:
string[] array = { "cat", "dog", "perl" };
// Use Array.Exists in different ways.
bool a = Array.Exists(array, element => element == "perl");
bool c = Array.Exists(array, element => element.StartsWith("d"));
bool d = Array.Exists(array, element => element.StartsWith("x"));
편집: 당신도 그 자리가 필요한지 몰랐어요.사용할 수 없습니다.IndexOf
배열 유형의 값에 직접 적용됩니다. 명시적으로 구현되기 때문입니다.그러나 다음을 사용할 수 있습니다.
IList<string> arrayAsList = (IList<string>) stringArray;
int index = arrayAsList.IndexOf(value);
if (index != -1)
{
...
}
(이것은 Darin의 답변에 따라 전화를 거는 것과 유사합니다. - 단지 대안적인 접근 방식일 뿐입니다.어레이에서 명시적으로 구현되는 이유는 분명하지 않지만, 신경 쓰지 마십시오.)
사용할 수 있습니다.Array.IndexOf()
요소를 찾을 수 없고 이 경우를 처리해야 하는 경우 -1이 반환됩니다.
int index = Array.IndexOf(stringArray, value);
당신은 이렇게 시도할 수 있습니다...Array를 사용할 수 있습니다.IndexOf(), 위치도 알고 싶은 경우
string [] arr = {"One","Two","Three"};
var target = "One";
var results = Array.FindAll(arr, s => s.Equals(target));
IMO 배열에 지정된 값이 포함되어 있는지 확인하는 가장 좋은 방법은System.Collections.Generic.IList<T>.Contains(T item)
방법은 다음과 같습니다.
((IList<string>)stringArray).Contains(value)
전체 코드 샘플:
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
if (((IList<string>)stringArray).Contains(value)) Console.WriteLine("The array contains "+value);
else Console.WriteLine("The given string was not found in array.");
T[]
어레이는 몇 가지 방법을 개인적으로 구현합니다.List<T>
Count 및 Contains와 같은 항목을 입력합니다.명시적(개인적) 구현이기 때문에 어레이를 먼저 캐스팅하지 않고는 이러한 방법을 사용할 수 없습니다.이것은 문자열에만 적용되는 것이 아닙니다. 요소의 클래스가 IComparable을 구현하는 한 이 방법을 사용하여 모든 유형의 배열에 요소가 포함되어 있는지 확인할 수 있습니다.
모두가 아님을 명심하세요.IList<T>
방법은 이런 식으로 작동합니다.사용하려고 합니다.IList<T>
어레이의 추가 메서드가 실패합니다.
시스템을 사용합니다.린크
stringArray.Contains(value3);
이를 시도하면 이 요소가 포함된 인덱스를 검색하고 인덱스 번호를 int로 설정한 다음 int가 -1보다 큰지 여부를 확인합니다. 따라서 0 이상이면 배열이 0을 기반으로 하는 인덱스를 찾았음을 의미합니다.
string[] Selection = {"First", "Second", "Third", "Fourth"};
string Valid = "Third"; // You can change this to a Console.ReadLine() to
//use user input
int temp = Array.IndexOf(Selection, Valid); // it gets the index of 'Valid',
// in our case it's "Third"
if (temp > -1)
Console.WriteLine("Valid selection");
}
else
{
Console.WriteLine("Not a valid selection");
}
string x ="Hi ,World";
string y = x;
char[] whitespace = new char[]{ ' ',\t'};
string[] fooArray = y.Split(whitespace); // now you have an array of 3 strings
y = String.Join(" ", fooArray);
string[] target = { "Hi", "World", "VW_Slep" };
for (int i = 0; i < target.Length; i++)
{
string v = target[i];
string results = Array.Find(fooArray, element => element.StartsWith(v, StringComparison.Ordinal));
//
if (results != null)
{ MessageBox.Show(results); }
}
나는 재사용을 위한 확장 방법을 만들었습니다.
public static bool InArray(this string str, string[] values)
{
if (Array.IndexOf(values, str) > -1)
return true;
return false;
}
어떻게 부르나요?
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
if(value.InArray(stringArray))
{
//do something
}
string[] strArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
if(Array.contains(strArray , value))
{
// Do something if the value is available in Array.
}
가장 간단하고 짧은 방법은 다음과 같습니다.
string[] stringArray = { "text1", "text2", "text3", "text4" };
string value = "text3";
if(stringArray.Contains(value))
{
// Do something if the value is available in Array.
}
언급URL : https://stackoverflow.com/questions/7867377/checking-if-a-string-array-contains-a-value-and-if-so-getting-its-position
'programing' 카테고리의 다른 글
브라우저에서 클라이언트의 컴퓨터 이름을 읽으려면 어떻게 해야 합니까? (0) | 2023.06.10 |
---|---|
Microsoft Excel 매크로에 포함된 연결 문자열 수정 (0) | 2023.06.10 |
UICollectionViewCell 내부의 UICollectionView -- 동적 높이? (0) | 2023.06.10 |
PL/SQL에서 CASE 문을 실행하는 동안 ORA-06592: CASE를 찾을 수 없는 이유는 무엇입니까? (0) | 2023.06.10 |
텍스트 파일의 URL이 주어지면 텍스트 파일의 내용을 읽는 가장 간단한 방법은 무엇입니까? (0) | 2023.06.10 |