计算空格数,并在最后一个处分开

时间:2014-11-28 14:57:20

标签: powershell count powershell-v2.0

我有一个字符串simliar:

c:/folder name/somewhere/application.exe instanceName

(n.b。“文件夹名称”中的空格是故意的)我需要一种方法将其分成:

[0]c:/folder name/somewhere/application.exe
[1]instanceName

我打算使用split-path,但很明显PowerShell v2中有一个错误阻止我这样做:

Split-Path : Cannot find drive. A drive with the name '

所以,我想我是否计算了有多少个空格,然后只需使用-split()将它分割到最后一个空格。 但是,我看不出如何计算空格的数量。 我发现很多关于使用正则表达式计算复杂字符串的例子,但我只是想计算空格!

2 个答案:

答案 0 :(得分:3)

我想象的方法可以做到这一点,但是要使用你的分裂想法,你可以做到以下几点。

$split = "c:/folder name/somewhere/application.exe instanceName".Split(" ")
$path =  $split[0..($split.count -2)] -Join " "
$instance = $split[-1]

用空格分开刺痛。空格数由数组$split中的字符串数表示。我们连接数组中的所有字符串接受最后一个intp $path然后我们取最后一个条目并将其分配给$instance

您还可以使用.substring.lastindexof

$string = "c:/folder name/somewhere/application.exe instanceName"
$index = $string.LastIndexOf(" ")
$string.Substring(0,$index)
$string.Substring($index + 1)

此时我无法直接将其拆分为数组,但输出数组并不是什么大问题。

$path, $instance

$array = @($path,$instance)

答案 1 :(得分:1)

您可以使用正则表达式:

$s = "c:/folder name/somewhere/application.exe instanceName"
$s -match '(.*) (.*)$'
$matches[1]
$matches[2]

如果$matches操作为true,则填充特殊变量-match

$matches[0]包含原始字符串,其他索引将存在于正则表达式中的组数(括号中的模式)。在这种情况下:(.*) (.*)$我们有两个小组。