字符串指的是以一个序列来表示文本的字符集合。例如,如果你把三个字母、四个数字(0-9)和几个符号(@、#、$)联合起来写,就会形成一个字符串。字符串看起来像一个数组,因为索引规则与字符串相同;其存储概念与数组相似;然而,区别在于提取存储在一个内存块中的单一数据值。你可以通过调用数组并传递所需的索引号来找到数组中的数据值。然而,如果你想看到字符串中的任何一个字符或多个字符,你可以从字符串的 "substring "方法中获得帮助。在使用子串方法时,你必须定义你想找到的字符的限制。
为了深入了解子串,首先,我们可以去了解PowerShell中的字符串。
如何用PowerShell定义一个字符串
你也可以用单引号和双引号来定义字符串。然而,这两种表示方法都有一些区别;例如,用单引号表示的字符串将所有的值都视为常量,而用双引号写的字符串则自动获取变量的值。
此外,单引号和双引号的区别在下面的例子中给出。例如,我们在字符串中写到 "你的**PowerShell版本是:PSEdition包含你的PowerShell版本的值。
> $pse=‘Your PowerShell edition is: $PSEdition’
一旦你执行这个命令,你可以注意到单引号字符串被打印出来了;现在用双引号检查一下。
> $pse1= “Your PowerShell edition is: $PSEdition”
双引号将打印PowerShell的版本,它被存储在$PSEdition中。
你可以使用PowerShell ISE执行这个操作。
在PowerShell ISE的脚本窗格内写下同样的一行,并保存脚本。
'Your PowerShell edition is: $PSEdition'
我们将脚本保存为 "ISE.ps1",位置是 "C:\scripts"。
要运行该脚本,请将你的终端导航到该脚本的保存位置。
下面是上述脚本的输出。
使用相同的代码,但要用双引号改变它。
"Your PowerShell edition is $PSEdition"
创建一个新的脚本并将代码保存在其中。
在我们的例子中,我们在同一个目录 "C:\scripts"中创建了 "ISE2.ps1 "脚本。
脚本的输出如下所示。
如何使用子字符串查找任何字符
在一个字符串中寻找一个字符串的一种方法是使用子串方法。在PowerShell中,所有东西都是一个对象。此外,每样东西都有一个方法,这里将使用String对象的substring方法来寻找字符串中的一个字符串。所以,为此,你必须打开PowerShell ISE;打开后,在脚本窗格中创建一个字符串,并为该字符串分配多个字符。我们将通过一个例子来解释substring方法的使用。
例如,我们在PowerShell脚本中创建了一个字符串,并将该脚本保存为 "IS3.ps1"。
> $string = “this is power shell substring method”
> $string
当你运行该脚本时,它将显示字符串的所有字符。
要打印字符串中选定的字符;例如,要只打印 "this**is PowerShell",**有两件事你必须考虑。
- int startIndex。这个因素意味着你想从哪个字符开始你的子串值?
- Int length:在 决定了起始索引之后,你必须选择子串的大小;这意味着你的子串将涵盖多少个字符,对吗?
因为我们是从字符串的第一个字符开始的,所以在我们的例子中 "intstartIndex "将是(0)。此外,假设我们想得到 "thisis PowerShell",那么我们将向右移动18个字符[包括 "空格"]。代码如下。
> $string= "this is powershell substring method"
> $string.Substring(0,18)
我们创建了另一个脚本,"ISE4**.ps1"** 两个值都被传递给substring方法,如下图所示。
在输出窗格中运行该脚本。
如何查找特定字符前后的子串
如果我们有一个字符串 "thisis windows, powershell ISE",并且想查看字符", "前后的子串;首先,我们必须识别这个字符,比如说这个字符是","。
要做到这一点,我们必须使用 "IndexOf "方法。
第1步:首先,我们将创建一个变量并存储字符串的索引值。
下面是演示代码。
> $string= "this is windows, powershell ISE"
> $ref=$string.Indexof(",")
> $ref
我们将这段代码保存在新的脚本 "ISE5**.ps1 "中。**
脚本 "ISE5**.ps1 "**的输出如下所示。
我们将", "的索引值存储在变量"$ref "中,并将使用这个变量来查找子串。
第2步:要找到","之前的子串。
你必须传递两个参数:一个参数是 "0**"**,这表明结果将从字符串的初始字符开始;此外,第二个参数代表字符", "的索引号。
由于我们必须使用上一步的$ref变量:所以我们将对脚本 "ISE5.ps1"进行修改,并将其保存为 "ISE6.ps1"。
> $string= “this is windows, powershell ISE”
> $ref=$string.Indexof(“,”)
> $newstring=$string.substring(0,$ref)
> $newstring
这个脚本在下面给出。
这个脚本的输出如下。
第3步:为了找到字符", "之后的子串**,**你只需要传递一个参数,这个参数将在索引号上添加 "1",如下所示;输出结果将显示字符串中", "之后的剩余字符:代码如下,我们将代码保存在一个新的脚本 "ISE7.ps1"
> $string= "this is windows, powershell ISE"
> $ref=$string.Indexof(",")
> $ns=$string.substring($ref+1)
> $ns
脚本 "ISE7.ps1 "在下面给出。
脚本的输出如下:可以看出,", "之后的字符被显示出来。
结论
字符串包含多个字符,可以存储在一个变量中。它们在编程中初始化变量时起着至关重要的作用。子串是一个字符串的一部分,它包含了一个字符串的几个字符。
在本指南中,我们演示了子串在Windows PowerShell中的使用。人们可以使用本指南中给出的方法找到几个字符。此外,你可以通过针对父字符串中的特定字符来推导出子字符串。