искать строку для массива фрагментов строки - PullRequest
3 голосов
/ 29 сентября 2010

Мне нужно найти строку, чтобы увидеть, содержит ли она какой-либо текст в массиве строк.Например,

excludeList = "warning", "обычная неважная вещь", "что-то еще"

searchString = здесь - строка, рассказывающая нам об общей незначительной вещи.* otherString = что-то общее, но не связанное

В этом примере мы нашли бы строку "общая неважная вещь" из массива в моем searchList и вернули бы true.однако otherString не содержит ни одной из полных строк в массиве, поэтому возвращает false.

Я уверен, что это не так сложно, но я смотрю на это слишком долго ...

Обновление: лучшее, что я могу получить на данный момент:

#list of excluded terms
$arrColors = "blue", "red", "green", "yellow", "white", "pink", "orange", "turquoise"

#the message of the event we've pulled
$testString = "there is a blue cow over there"
$test2="blue"
$count=0
#check if the message contains anything from the secondary list
$arrColors | ForEach-Object{
    echo $count
    echo $testString.Contains($arrColors[$count])
    $count++

}

это не слишком элегантно, хотя ...

Ответы [ 2 ]

9 голосов
/ 29 сентября 2010

Вы можете использовать регулярное выражение. '|' Символ регулярного выражения является эквивалентом оператора ИЛИ:

PS> $excludeList="warning|a common unimportant thing|something else"
PS> $searchString="here is a string telling us about a common unimportant thing."
PS> $otherString="something common but unrelated"

PS> $searchString -match $excludeList
True

PS> $otherString -match $excludeList
False
3 голосов
/ 11 июня 2011

Функция ниже находит все элементы, содержащиеся в указанной строке, и возвращает true, если они найдены.

function ContainsAny( [string]$s, [string[]]$items ) {
  $matchingItems = @($items | where { $s.Contains( $_ ) })
  [bool]$matchingItems
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...