【发布时间】:2021-12-31 21:46:16
【问题描述】:
foreach ($line in $test) {
$line.GetType()
$newline = $line -split ("<.*?>") -split ("{.*?}") # remove html and css tags
$newline.GetType()
}
我在尝试对 $newline 使用 .Trim() 方法时遇到了这个问题。它有效,但智能感知并没有表明它会。我以为.Trim() 只适用于字符串对象(BaseType:System.Object),但在这种情况下,它似乎也适用于 String[] 对象(BaseType:System.Array)。
$line.GetType() 返回
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
$newline.GetType() 返回
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String[] System.Array
首先,我想知道为什么我的原始字符串被转换为一个数组,假设它是-split的返回值...现在是一个字符数组吗?我有点困惑。
其次,如果有一个好的答案,为什么字符串方法对技术上的数组起作用?
来自 Python 和 C/C++,谢谢。
【问题讨论】:
-
你打电话给
-split了吗?字符串和数组都支持-split操作。对于字符串,您将一个字符串拆分为一个字符串数组,在找到拆分模式的任何地方进行拆分。对于字符串数组,您可以获得所有字符串元素的串联,以相同的方式拆分。因此,如果您有一个包含 2 个元素的数组,并且您在两个元素中找到一个字母进行拆分,那么您现在有 4 个元素。 -
所以基本上
string -split给出了字符串数组。array -split给出另一个数组。 -
@LasseV.Karlsen 所以 .Trim() 方法可以处理字符串数组吗?它是否将其应用于数组中的所有元素?
-
对于在数组上调用
.Trim()是否意味着 Powershell 在数组上定义了Trim()操作,或者当在数组上调用时,它是否解除了对元素的Trim()操作,我有点模糊,表示在每个元素上调用操作的另一个数组,但是是的,它将应用于每个元素。它会修剪每个元素,但不会修剪数组,这意味着如果第一个或最后一个元素是空格/空,它们仍然存在,它们只是空字符串。 -
Powershell 似乎提升了对数组的操作以暗示对每个元素的操作,从而产生一个新数组。我刚刚用
.ToUpper()、.Substring(..)等进行了测试。这可能在某处有很好的记录。
标签: arrays string powershell