Count number of spaces, and split at the last one

…衆ロ難τιáo~ 提交于 2019-12-12 02:04:17

问题


I have a string simliar to:

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

(n.b. the space in "folder name" is intentional) I need a way to split this into:

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

I was going to use split-path, but apparently there is a bug in powershell v2 that stops me doing this:

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

So, I figured if I count how many spaces there are, and then simply use -split() to split it at the last space. But, I can't see how to count the number of spaces. I've found lots of examples that talk about using regex to count complex strings, but I just want to count spaces!


回答1:


Tonnes of ways to do this I imagine but to use your split idea you could do the following.

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

Split the sting by spaces. The number of spaces is represented by the count of strings in the array $split. We join all the strings in the array accept the last intp $path then we take the last entry and assign it to $instance

You could also use .substring and .lastindexof

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

I can't see a way to split this directly into an array at this time but outputing as an array would not be a big deal.

$path, $instance

or

$array = @($path,$instance)



回答2:


You can use a regular expression for this:

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

The special variable $matches is populated if the -match operation is true.

$matches[0] contains the original string, and other indexes will exist for the number of groups (patterns in parenthesis) in the regex. In this case: (.*) (.*)$ we have two groups.



来源:https://stackoverflow.com/questions/27191281/count-number-of-spaces-and-split-at-the-last-one

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!