当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 子字符串:在字符串中查找字符串

作者:精品下载站 日期:2024-12-14 12:40:23 浏览:15 分类:玩电脑

PowerShell 子字符串:在字符串中查找字符串


管理员世界中的一个常见场景是找到一种方法来查找字符串中的特定文本片段;称为子串。 PowerShell 使查找子字符串变得极其容易。

相关:学习字符串格式和扩展字符串

PowerShell 和字符串

在 PowerShell 世界中,字符串由一组用单引号或双引号括起来的字符组成。像 "foo"'bar' 这样的字符串非常常见。

相关:回归基础:PowerShell 字符串

假设您在变量中定义了一个字符串,并且只需要查找它的一部分?例如,假设您有一个地址为 1234 4th St 的字符串。您想提取该号码并知道前四个字符始终是您需要的号码。在这种情况下,您可以使用 PowerShell substring() 方法。

使用 PowerShell 子字符串方法

要使用 PowerShell 查找字符串中的字符串,可以使用 Substring() 方法。 PowerShell 中的每个字符串对象都可以找到此方法。

例如,也许您有一个类似 The Quick Brown Fox Jumped over the fence. 的字符串。您希望找到前五个字符。您可以使用 Substring() 方法来做到这一点,如下所示:

$string = 'The quick brown fox jumped over the fence.'
$string.Substring(0,5)

传递给 Substring() 方法的第一个参数是最左边字符的位置。在本例中,最左边的字符是 T。第二个参数是最右边的字符位置。在本例中,字符是q

Substring() 方法返回它们之间的所有字符。

这是一个现实世界的例子:

假设我们有一个具有以下格式的产品代码:XXXXVVVV-MM-DD-YYYY。所有产品都具有此代码格式,并且永远不会偏离它。现在假设生成此代码的库存管理软件在数据库中不包含创建日期字段。

但是,软件始终将此日期作为 MM-DD-YYYY 放在产品代码本身中,以便我们可以从产品代码中推断出这一点。我们需要为我们的产品获取这个日期,以便为管理层创建一些超级花哨但极其不必要的报告,以显示每个产品何时插入数据库。这是完成此任务的好方法。

$product_code = 'ABCD1234-11-12-2013'
$date_created = [DateTime]$product_code.SubString($product_code.Length-10)

在此示例中,我们对固有字符串对象使用 PowerShell SubString() 方法,并将我们要查找的第一个字符的数字作为参数传递。

由于我们没有指定停止字符,因此假设我们希望所有字符都位于字符串的末尾。为了首先找到这个数字,我们首先要获取整个产品代码的长度,然后简单地从中减去 10。在此示例中,这意味着我们要从字符串右侧的第 10 个字符及其右侧的所有字符开始。

[DateTime] 类型不一定与帖子的子字符串主题一致,但我认为它非常适合特定的示例。

获得 11-12-2013 的字符串后,我们将其转换为 [DateTime] 对象,该对象将曾经是一个哑字符串转换为一个漂亮的对象。从这里,我们可以执行所有精美的日期算术管理希望我们对其执行的操作,并生成精美的条形图报告!

使用长度属性动态查找子字符串

在上面的示例中,您静态定义了字符串内部字符的开始和结束位置。但是如果您不知道最后一个位置怎么办?

也许您需要从最后四个字符中找到子字符串。您需要找到从第四个到最后一个位置一直到最后的字符集。您正在搜索的字符串可以是任意长度。

我们可以使用字符串的长度并从中扣除一定数量的字符来动态指定结束位置,而不是将结束位置定义为从左侧计数的正数。

使用上面的字符串 $product_code='ABCD1234-11-12-2013',也许您想查找最后四个字符。而不是做这样的事情:

PS> $product_code = 'ABCD1234-11-12-2013'
PS> $product_code.SubString(0,4)
ABCD

您可以将 0 替换为 $product_code.Length - 4,甚至根本不使用结束位置,它将返回最后四个字符,如下所示。

PS> $product_code = 'ABCD1234-11-12-2013'
PS> $product_code.SubString($product_code.Length-4)
2013

如果不指定结束位置,PowerShell 子字符串方法将始终默认为最后一个字符位置。

使用字符串的 length 属性(即字符串中的字符总数)并从该计数中扣除,您可以动态挑选子字符串。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯