Powershell 拆分未返回预期结果
Powershell split not returning expected result
Powershell 5.1.1 returns 当我对字符串使用拆分函数时出现意外结果。
例如:
"some_user@domain.s483.hgy.i.lo.uk".split("@domain.")[-1]
>> uk
我希望看到 domain.hgy.i.lo.uk
而不是 uk
!
这是一个错误还是我在这里遗漏了什么?这似乎适用于更高版本的 powershell。有人可以解释一下吗?
使用-split
运算符如下:
"some_user@domain.s483.hgy.i.lo.uk" -split [regex]::Escape("@domain.")
some_user
s483.hgy.i.lo.uk
如果您坚持使用 Split()
方法,则使用
"some_user@domain.s483.hgy.i.lo.uk".Split([string[]]'@domain.',[System.StringSplitOptions]::None)
some_user
s483.hgy.i.lo.uk
后者基于对可与 Split()
方法一起使用的不同参数集列表的熟悉程度:
''.split
OverloadDefinitions
-------------------
string[] Split(Params char[] separator)
string[] Split(char[] separator, int count)
string[] Split(char[] separator, System.StringSplitOptions options)
string[] Split(char[] separator, int count, System.StringSplitOptions options)
string[] Split(string[] separator, System.StringSplitOptions options)
string[] Split(string[] separator, int count, System.StringSplitOptions options)
如果您想在 @domain.
的第一个字符处拆分但 不删除 "domain.",请使用 -split
正则表达式运算符先行断言:
("some_user@domain.s483.hgy.i.lo.uk" -split "@(?=domain\.)")[-1]
参见 for how to force PowerShell to pick the correct String.Split()
overload,尽管它不会帮助您保留 domain.
部分
或者将“@”符号前的所有内容替换为空:
'some_user@domain.s483.hgy.i.lo.uk' -replace '.*@'
domain.s483.hgy.i.lo.uk
Powershell 5.1.1 returns 当我对字符串使用拆分函数时出现意外结果。
例如:
"some_user@domain.s483.hgy.i.lo.uk".split("@domain.")[-1]
>> uk
我希望看到 domain.hgy.i.lo.uk
而不是 uk
!
这是一个错误还是我在这里遗漏了什么?这似乎适用于更高版本的 powershell。有人可以解释一下吗?
使用-split
运算符如下:
"some_user@domain.s483.hgy.i.lo.uk" -split [regex]::Escape("@domain.")
some_user s483.hgy.i.lo.uk
如果您坚持使用 Split()
方法,则使用
"some_user@domain.s483.hgy.i.lo.uk".Split([string[]]'@domain.',[System.StringSplitOptions]::None)
some_user s483.hgy.i.lo.uk
后者基于对可与 Split()
方法一起使用的不同参数集列表的熟悉程度:
''.split
OverloadDefinitions ------------------- string[] Split(Params char[] separator) string[] Split(char[] separator, int count) string[] Split(char[] separator, System.StringSplitOptions options) string[] Split(char[] separator, int count, System.StringSplitOptions options) string[] Split(string[] separator, System.StringSplitOptions options) string[] Split(string[] separator, int count, System.StringSplitOptions options)
如果您想在 @domain.
的第一个字符处拆分但 不删除 "domain.",请使用 -split
正则表达式运算符先行断言:
("some_user@domain.s483.hgy.i.lo.uk" -split "@(?=domain\.)")[-1]
参见 String.Split()
overload,尽管它不会帮助您保留 domain.
部分
或者将“@”符号前的所有内容替换为空:
'some_user@domain.s483.hgy.i.lo.uk' -replace '.*@'
domain.s483.hgy.i.lo.uk