문자열 배열에 문자열이 포함되어 있는지 확인하기 위해 C# 사용
문자열 값이 문자열 배열에 단어를 포함하는지 확인하기 위해 C#을 사용합니다.예를들면,
string stringToCheck = "text1text2text3";
string[] stringArray = { "text1", "someothertext", etc... };
if(stringToCheck.contains stringArray) //one of the items?
{
}
stringToCheck' 문자열 값에 배열에 단어가 포함되어 있는지 확인하려면 어떻게 해야 합니까?
방법은 다음과 같습니다.
using System.Linq;
if(stringArray.Any(stringToCheck.Contains))
/* or a bit longer: (stringArray.Any(s => stringToCheck.Contains(s))) */
'아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아,stringToCheck
에는, 「」의 중 .stringArray
되어 있는 하려면 , 변경해 주세요.Any
로로 합니다.All
:
if(stringArray.All(stringToCheck.Contains))
그 방법은 다음과 같습니다.
string stringToCheck = "text1";
string[] stringArray = { "text1", "testtest", "test1test2", "test2text1" };
foreach (string x in stringArray)
{
if (stringToCheck.Contains(x))
{
// Process...
}
}
더 나은 해결책을 찾고 있을 수도 있습니다.LINQ를 활용한 Anton Gogolev의 답변을 참조하십시오.
⚠136 참고: 이 내용은 질문에 대한 답변이 아닙니다. |
---|
질문은 "단어 목록에서 어떤 단어가 포함되어 있는지 어떻게 확인할 수 있는가?" 입니다. |
이 답변은 단어 목록에 특정 단어가 하나 포함되어 있는지 확인합니다. |
이것을 시험해 보세요.
LINQ 사용 불필요
if (Array.IndexOf(array, Value) >= 0)
{
//Your stuff goes here
}
⚠136 참고: 이 내용은 질문에 대한 답변이 아닙니다. |
---|
질문은 "단어 목록에서 어떤 단어가 포함되어 있는지 어떻게 확인할 수 있는가?" 입니다. |
이 답변은 단어 목록에 특정 단어가 하나 포함되어 있는지 확인합니다. |
LINQ 메서드를 사용합니다.
stringArray.Contains(stringToCheck)
⚠136 참고: 이 내용은 질문에 대한 답변이 아닙니다. |
---|
질문은 "단어 목록에서 어떤 단어가 포함되어 있는지 어떻게 확인할 수 있는가?" 입니다. |
이 답변은 단어 목록에 특정 단어가 하나 포함되어 있는지 확인합니다. |
가장 쉽고 간단한 방법:
bool bol = Array.Exists(stringarray, E => E == stringtocheck);
⚠136 참고: 이 내용은 질문에 대한 답변이 아닙니다. |
---|
질문은 "단어 목록에서 어떤 단어가 포함되어 있는지 어떻게 확인할 수 있는가?" 입니다. |
이 답변은 단어 목록에 특정 단어가 하나 포함되어 있는지 확인합니다. |
string strName = "vernie";
string[] strNamesArray = { "roger", "vernie", "joel" };
if (strNamesArray.Any(x => x == strName))
{
// do some action here if true...
}
다음과 같은 경우가 있습니다.
string stringToCheck = "text1text2text3";
string[] stringArray = new string[] { "text1" };
if (Array.Exists<string>(stringArray, (Predicate<string>)delegate(string s) {
return stringToCheck.IndexOf(s, StringComparison.OrdinalIgnoreCase) > -1; })) {
Console.WriteLine("Found!");
}
⚠136 참고: 이 내용은 질문에 대한 답변이 아닙니다. |
---|
질문은 "단어 목록에서 어떤 단어가 포함되어 있는지 어떻게 확인할 수 있는가?" 입니다. |
이 답변은 단어 목록에 특정 단어가 하나 포함되어 있는지 확인합니다. |
stringArray.ToList().Contains(stringToCheck)
ifstringArray
에는 다양한 길이의 문자열이 다수 포함되어 있으므로 Trie를 사용하여 문자열 배열을 저장 및 검색하는 것을 검토해 주십시오.
public static class Extensions
{
public static bool ContainsAny(this string stringToCheck, IEnumerable<string> stringArray)
{
Trie trie = new Trie(stringArray);
for (int i = 0; i < stringToCheck.Length; ++i)
{
if (trie.MatchesPrefix(stringToCheck.Substring(i)))
{
return true;
}
}
return false;
}
}
은 ', 하다, 하다'의 내용입니다.Trie
표시
public class Trie
{
public Trie(IEnumerable<string> words)
{
Root = new Node { Letter = '\0' };
foreach (string word in words)
{
this.Insert(word);
}
}
public bool MatchesPrefix(string sentence)
{
if (sentence == null)
{
return false;
}
Node current = Root;
foreach (char letter in sentence)
{
if (current.Links.ContainsKey(letter))
{
current = current.Links[letter];
if (current.IsWord)
{
return true;
}
}
else
{
return false;
}
}
return false;
}
private void Insert(string word)
{
if (word == null)
{
throw new ArgumentNullException();
}
Node current = Root;
foreach (char letter in word)
{
if (current.Links.ContainsKey(letter))
{
current = current.Links[letter];
}
else
{
Node newNode = new Node { Letter = letter };
current.Links.Add(letter, newNode);
current = newNode;
}
}
current.IsWord = true;
}
private class Node
{
public char Letter;
public SortedList<char, Node> Links = new SortedList<char, Node>();
public bool IsWord;
}
private Node Root;
}
의 stringArray
게 요.HashSet
Trie
public static bool ContainsAny(this string stringToCheck, IEnumerable<string> stringArray)
{
int stringLength = stringArray.First().Length;
HashSet<string> stringSet = new HashSet<string>(stringArray);
for (int i = 0; i < stringToCheck.Length - stringLength; ++i)
{
if (stringSet.Contains(stringToCheck.Substring(i, stringLength)))
{
return true;
}
}
return false;
}
를 내릴 수 .string.ContainsAny()
★★★★★★★★★★★★★★★★★」string.ContainsAll()
방법들.보너스로, 나는 심지어 내 아들을string.Contains()
대소문자를 구별하지 않는 비교 등을 가능하게 하는 방법
public static class Extensions
{
public static bool Contains(this string source, string value, StringComparison comp)
{
return source.IndexOf(value, comp) > -1;
}
public static bool ContainsAny(this string source, IEnumerable<string> values, StringComparison comp = StringComparison.CurrentCulture)
{
return values.Any(value => source.Contains(value, comp));
}
public static bool ContainsAll(this string source, IEnumerable<string> values, StringComparison comp = StringComparison.CurrentCulture)
{
return values.All(value => source.Contains(value, comp));
}
}
다음 코드를 사용하여 테스트할 수 있습니다.
public static void TestExtensions()
{
string[] searchTerms = { "FOO", "BAR" };
string[] documents = {
"Hello foo bar",
"Hello foo",
"Hello"
};
foreach (var document in documents)
{
Console.WriteLine("Testing: {0}", document);
Console.WriteLine("ContainsAny: {0}", document.ContainsAny(searchTerms, StringComparison.OrdinalIgnoreCase));
Console.WriteLine("ContainsAll: {0}", document.ContainsAll(searchTerms, StringComparison.OrdinalIgnoreCase));
Console.WriteLine();
}
}
이를 위해서는 LINQ와 메서드 그룹을 사용하는 것이 가장 빠르고 콤팩트한 방법입니다.
var arrayA = new[] {"element1", "element2"};
var arrayB = new[] {"element2", "element3"};
if (arrayB.Any(arrayA.Contains))
return true;
⚠136 참고: 이 내용은 질문에 대한 답변이 아닙니다. |
---|
질문은 "단어 목록에서 어떤 단어가 포함되어 있는지 어떻게 확인할 수 있는가?" 입니다. |
이 답변은 단어 목록에 특정 단어가 하나 포함되어 있는지 확인합니다. |
LINQ를 사용하지만 다음 방법으로도 실행할 수 있습니다.
new[] {"text1", "text2", "etc"}.Contains(ItemToFind);
배열 클래스의 Find 또는 FindIndex 메서드를 사용하는 경우:
if(Array.Find(stringArray, stringToCheck.Contains) != null)
{
}
if(Array.FindIndex(stringArray, stringToCheck.Contains) != -1)
{
}
이 솔루션도 시도해 볼 수 있습니다.
string[] nonSupportedExt = { ".3gp", ".avi", ".opus", ".wma", ".wav", ".m4a", ".ac3", ".aac", ".aiff" };
bool valid = Array.Exists(nonSupportedExt,E => E == ".Aac".ToLower());
⚠136 참고: 이 내용은 질문에 대한 답변이 아닙니다. |
---|
질문은 "단어 목록에서 어떤 단어가 포함되어 있는지 어떻게 확인할 수 있는가?" 입니다. |
이 답변은 단어 목록에 특정 단어가 하나 포함되어 있는지 확인합니다. |
콘솔 응용 프로그램에서 다음을 사용하여 인수를 확인합니다.
var sendmail = args.Any( o => o.ToLower() == "/sendmail=true");
안톤 고골레프가 제안하는 것과 같은 방법으로 이 안에 어떤 아이템이 있는지 확인할 수도 있습니다.stringArray1
의 임의의 항목과 일치합니다.stringArray2
:
using System.Linq;
if(stringArray1.Any(stringArray2.Contains))
마찬가지로 stringArray1의 모든 항목은 stringArray2의 모든 항목과 일치합니다.
using System.Linq;
if(stringArray1.All(stringArray2.Contains))
제 경우 위의 답변은 효과가 없었습니다.배열에 문자열이 있는지 확인하고 부울 값에 할당했습니다.안톤 고골레프의 답변을 수정해서 삭제했어요Any()
및 method를 합니다.stringToCheck
내 the의 Contains()
★★★★★★ 。
bool isContain = stringArray.Contains(stringToCheck);
Maitrey684의 IndexOf 및 Theomax의 Foreach 루프와 유사한 방법을 사용하여 만들었습니다.(주의: 처음 3행의 "문자열"은 어레이를 생성하여 적절한 포맷으로 만드는 방법의 예시일 뿐입니다).
두 어레이를 비교하는 경우 세미콜론으로 구분되지만 마지막 값에는 세미콜론으로 구분되지 않습니다.배열의 문자열 형식에 세미콜론을 추가하는 경우(즉, a;b;c가 a;b;c가 된다), 위치에 관계없이 "x;"를 사용하여 일치시킬 수 있습니다.
bool found = false;
string someString = "a-b-c";
string[] arrString = someString.Split('-');
string myStringArray = arrString.ToString() + ";";
foreach (string s in otherArray)
{
if (myStringArray.IndexOf(s + ";") != -1) {
found = true;
break;
}
}
if (found == true) {
// ....
}
이전 답변을 완료하려면 IgnoreCase 체크에 대해 다음을 사용합니다.
stringArray.Any(s => stringToCheck.IndexOf(s, StringComparison.CurrentCultureIgnoreCase) > -1)
대부분의 솔루션이 올바르지만 대소문자를 구분하지 않고 값을 확인해야 하는 경우:
using System.Linq;
...
string stringToCheck = "text1text2text3";
string[] stringArray = { "text1", "someothertext"};
if(stringArray.Any(a=> String.Equals(a, stringToCheck, StringComparison.InvariantCultureIgnoreCase)) )
{
//contains
}
if (stringArray.Any(w=> w.IndexOf(stringToCheck, StringComparison.InvariantCultureIgnoreCase)>=0))
{
//contains
}
LINQ:
array.임의의 단어(x = > word).등호(x);
배열에 단어(정확한 일치)가 포함되어 있는지 확인합니다.서브스트링에 .Contains를 사용하거나 다른 로직을 적용해야 합니다.
시험:
String[] val = { "helloword1", "orange", "grape", "pear" };
String sep = "";
string stringToCheck = "word1";
bool match = String.Join(sep,val).Contains(stringToCheck);
bool anothermatch = val.Any(s => s.Contains(stringToCheck));
string [] lines = {"text1", "text2", "etc"};
bool bFound = lines.Any(x => x == "Your string to be searched");
bFound는 검색된 문자열이 배열 'lines'의 요소와 일치할 경우 true로 설정됩니다.
string word = "XRC"; // Try also with word = null;
string[] myWords = { "CUS", "CT", "NMS", "RX", "RUS", "VUS", "XRC", null };
if (myWords.Contains(word))
Console.WriteLine("1. if: contains the string");
if (myWords.Any(word.Contains))
Console.WriteLine("2. if: contains the string, but null elements throws an exception");
if (myWords.Any(x => x.Equals(word)))
Console.WriteLine("3. if: contains the string, but null elements throws an exception ");
public bool ContainAnyOf(string word, string[] array)
{
for (int i = 0; i < array.Length; i++)
{
if (word.Contains(array[i]))
{
return true;
}
}
return false;
}
이거 드셔보세요
string stringToCheck = "text1text2text3";
string[] stringArray = new string[] { "text1" };
var t = lines.ToList().Find(c => c.Contains(stringToCheck));
그러면 찾고 있는 텍스트의 첫 번째 발생률이 표시된 줄이 반환됩니다.
int result = Array.BinarySearch(list.ToArray(), typedString, StringComparer.OrdinalIgnoreCase);
이거 먹어봐.예:필드에 배열에 포함된 단어가 있는지 확인합니다.필드(someField)에 배열 내의 단어가 포함되어 있는지 확인합니다.
String[] val = { "helloword1", "orange", "grape", "pear" };
Expression<Func<Item, bool>> someFieldFilter = i => true;
someFieldFilter = i => val.Any(s => i.someField.Contains(s));
LINQ를 필요로 하지 않는 간단한 솔루션:
String.Join(",", array).Contains(Value + ",");
이거 먹어봐.루프가 필요 없어요
string stringToCheck = "text1";
List<string> stringList = new List<string>() { "text1", "someothertext", "etc.." };
if (stringList.Exists(o => stringToCheck.Contains(o)))
{
}
언급URL : https://stackoverflow.com/questions/2912476/using-c-sharp-to-check-if-string-contains-a-string-in-string-array
'programing' 카테고리의 다른 글
배열 또는 두 날짜 사이의 모든 날짜 목록 만들기 (0) | 2023.04.11 |
---|---|
EventTrigger를 사용하여 속성 설정 (0) | 2023.04.11 |
명령어를 WPF 텍스트블록에 추가하려면 어떻게 해야 하나요? (0) | 2023.04.11 |
각 GROUP BY 그룹에서 첫 번째 행을 선택하시겠습니까? (0) | 2023.04.11 |
여러 줄의 bash 코드를 단말기에 붙여넣고 한 번에 실행하려면 어떻게 해야 하나요? (0) | 2023.04.11 |