Powershell split() 与 -split - 有什么区别?

标签 powershell split

在为此苦苦挣扎了半个小时之后,我在用空格分割字符串时体验到了这种差异,具体取决于您使用的语法。

简单字符串:

$line = "1: 2: 3: 4: 5: "

拆分示例 1 - 请注意从 1 开始带有标记的额外空格:

$ln = $line.split(":\s+")
$ln
1
 2
 3
 4
 5

拆分示例 2 - 空格消失了(理应如此)

$ln = $line -split ":\s+"
$ln
1
2
3
4
5

我怀疑这是因为第一个是 .NET 方法(?),而 -split PS 运算符在正则表达式解释方面可能具有更多内置智能。

但是,当我尝试使用诸如 ": " 之类的拆分的第一种方法时,它也无法正常工作。如果它是 .NET,它是否需要一些东西来正确解释它应该使用这两个字符作为分隔符的事实?

最佳答案

.Net System.String.Split方法没有采用单个字符串参数的重载。它也不理解正则表达式。

发生的情况是 powershell 正在获取您传入的字符串并将其转换为字符数组。它本质上是按以下字符进行分割::\s+

当您使用 ": " 作为分隔符时,我想您会得到类似

的结果
1

2

3

4

5

这是因为,如果不为 .Net 方法指定字符串分割选项,它将包含在相邻分隔符之间找到的空字符串。

关于Powershell split() 与 -split - 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23796959/

相关文章:

powershell - 在 Where-Object 条件之后获取第一个值

file - 如何在PowerShell中将所有Active Directory计算机读入数组?

Powershell:确定进程是 32 位还是 64 位

python - 如何按\n 拆分嵌套列表但跳过第一个? Python

java - 当我将字符串输入拆分为数组时,该数组只有 1 个元素。这是为什么?

c# - 将文本拆分为单词 : Separators

powershell - 如何解析csv文件,查找触发器并使用Powershell拆分为新文件

powershell - 如何使用 xWebConfigKeyValue 设置多个 AppSettings 值?

Hadoop:使用 NLineInputFormat 进行压缩?

string - Excel VBA 分割文本