Mac*_*ley 3 powershell substring
我正在使用一个子串,它将在第二个'之前给我一切.' 我之前使用过子串来获得第一个'之前的所有内容'.'
$id = $file.Substring(0, $File.LastIndexof('.'))
Run Code Online (Sandbox Code Playgroud)
它完美无缺.对于第二个子串,这是我迄今为止所拥有的
$netVerShort = $netVer.Substring(0, 2nd ('.'))
Run Code Online (Sandbox Code Playgroud)
但我确定这不对.我从$ netVer获得的值是2.0.5727,并且使用第二个子字符串我试图让它返回2.0
Mat*_*att 12
不一定是最有效的方法,但您可以使用split进行此操作并重新加入您正在寻找的元素.请使用以下字符串:
$stuff = "This.is the end. Bagels. are. awesome."
Run Code Online (Sandbox Code Playgroud)
现在我们将它们分成句点,然后取出前两个元素并将它们连接在一起.
PS C:\Users\mcameron> $stuff.Split(".",3)
This
is the end
Bagels. are. awesome.
Run Code Online (Sandbox Code Playgroud)
3就是说我们只需要返回3个元素.根据你有多少个时期,这可能是一个好主意,不浪费时间.接下来我们需要加入你想要的2个元素.
PS C:\Users\mcameron> ($stuff.Split(".",3) | Select -Index 0,1) -join "."
This.is the end
Run Code Online (Sandbox Code Playgroud)
要解决您的.SubString()
方法,您需要检查两次,因为您将拥有第一个,然后您需要找到第二个.
PS C:\Users\mcameron> $stuff.Substring($stuff.IndexOf(".",$stuff.IndexOf(".") + 1))
. Bagels. are. awesome.
Run Code Online (Sandbox Code Playgroud)
获取第一个索引,$stuff.IndexOf(".")
然后在返回时添加1.使用该值作为搜索下一个句点的起始索引.然后将其用于子字符串.如果您不希望句点成为返回的一部分,请在整个事物中添加1.
如果使用版本号,System.Version
则可以为您进行解析的类:
$netVer = "2.0.5727"
$v = [version]$netVer
$netVerShort = "$($v.Major).$($v.Minor)"
Run Code Online (Sandbox Code Playgroud)
将产生“ 2.0”
因此,这是第一个'.'
:
$x.IndexOf('.')
Run Code Online (Sandbox Code Playgroud)
这是第一个之后的一切'.'
:
$x.Substring($x.IndexOf('.') + 1)
Run Code Online (Sandbox Code Playgroud)
这是第一个'.'
之后的第一个'.'
(因此,第二个期间):
$x.Substring($x.IndexOf('.') + 1).IndexOf('.')
Run Code Online (Sandbox Code Playgroud)
因此,我们想要的字符串长度为:
$x.IndexOf('.') + 1 + $x.Substring($x.IndexOf('.') + 1).IndexOf('.')
Run Code Online (Sandbox Code Playgroud)
因此,我们需要从头开始的字符串,该字符串的长度应足以到达第二个周期之前:
$x.Substring(0, $x.IndexOf('.') + 1 + $x.Substring($x.IndexOf('.') + 1).IndexOf('.'))
Run Code Online (Sandbox Code Playgroud)
所以:
PS C:\> $x = '198.51.100.5';
PS C:\> $x.Substring(0, $x.IndexOf('.') + 1 + $x.Substring($x.IndexOf('.') + 1).IndexOf('.'))
198.51
Run Code Online (Sandbox Code Playgroud)