【发布时间】:2018-09-07 20:36:08
【问题描述】:
我正在尝试从一个较大的字符串中分离并返回一个小的变量字符串。
我正在苦苦挣扎,因为我从中提取的较大字符串是列表格式。我可以成功地将其拆分为子字符串,但我不知道如何在不返回整个字符串的情况下选择其中一个子字符串。该字符串由命令行进程生成。
$StringList
AppTitle1.1.1221.aaa111
AppSubTitle
AnotherAppTitle1.1.1221.aaa111
AnotherAppSubTitle
...等等
我可以使用正则表达式将列表字符串逐行拆分为子字符串,以便在空格处拆分(任何给定行中都没有空格)。
$StringList -split "\s"
但是,一旦我将字符串拆分为所需的子字符串,我就不确定如何选择所需的子字符串。列表的长度(即其中存在的应用程序的数量)和我需要在该列表中检索标题的应用程序的位置是完全可变的,因此我不能简单地使用子字符串引用号。我尝试了几种选择子字符串的方法,但每种方法都只是返回了整个字符串,或者什么都不返回。
这是我尝试过的两种方法。第一个返回整个字符串列表,第二个什么也不返回。
$DesiredAppTitle = Select-String -InputObject $StringList -Pattern "AnotherAppTitle"
或
$DesiredAppTitle = foreach ($_.substring in $StringList)
{
if ($_.substring -contains "AnotherAppTitle")
{
return $_.name
}
}
我希望它返回的是:
AnotherAppTitle1.1.1221.aaa111
我确信有一百万种方法可以做到这一点,所以如果我的方法看起来都不合适,我愿意接受其他建议。任何帮助将不胜感激。提前致谢!
【问题讨论】:
标签: powershell