使用拆分

时间:2015-09-15 17:02:12

标签: powershell split

我有一个CSV文件,其中一个Colums称为Location。它包含“Office CityX”和“Home Office”。我想将它们插入AD。

我试过了:

$Location = -split $user.Location
$NewLocation = $Location[1]

很明显,我得到了City1,City2,......和“办公室”但我想要“家庭办公室”。 我如何拆分,以便我得到城市和整个“内政部”?

2 个答案:

答案 0 :(得分:2)

仅当位置包含单词city

时才拆分该位置
$NewLocation = if ($user.Location -like '*city*') {
                 $user.Location.Split()[1]
               } else {
                 $user.Location
               }

另一种选择(如果你有城市名称而不是“城市”这个词)将使用这样的正则表达式:

$NewLocation = if ($user.Location -match 'amsterdam|nairobi|rome|...') {
                 $user.Location.Split()[1]
               } else {
                 $user.Location
               }

或者,如果它只是您不想拆分的“家庭办公室”位置,您可以这样做:

$NewLocation = if ($user.Location -ne 'home office') {
                 $user.Location.Split()[1]
               } else {
                 $user.Location
               }

答案 1 :(得分:1)

我会提供另一种选择,以防它最终减少City1,City2,City3以及更多的奥兰多,芝加哥,西雅图。

RegEx可让您轻松拆分,并可容纳多字城市名称(而不是,,Office New York成为New)。另外,-split方法默认使用正则表达式。我们将捕获所需的文本,以便从拆分中返回,而不是排除。

$NewLocation = $_.Location -split ",,(?:Office )?(Home Office|(?<=Office ).+$)"

有关详细信息,请查看此RegEx101 link.

现在,如果我们抛出一些字符串,它将返回&#34; Home Office&#34;或者随后的任何事情&#34; ,, Office&#34;。例子:

,,Office Seattle
,,Home Office
,,Office Chicago

变为:

Seattle
Home Office
Chicago