PowerShell String对象方法小结
从之前的章节中,我们知道PowerShell将一切存储在对象中,那这些对象中包含了一系列中的称之为方法的指令。默认文本存储在String对象中,它包含了许多非常有用的处理文本的命令。例如,要确定一个文件的扩展名,可以使用LastindexOf()获取最后一个字符“.”的位置,继续使用Substring()获取扩展名子串。
PS> $path = "C:\PRefs.js" PS> $path.Substring( $path.LastIndexOf(".")+1 ) Js
另外一条途径,使用SplIT方法,对文件的完整名称进行分割,得到一个字符串数组,取最后一个元素,PowerShell中可以通过索引-1来获取数组中最后一个元素。
PS> $path.Split(".")[-1] Js
下面的表格会给出String对象的所有方法:
函数 | 描述 | 示例 |
CompareTo() | 与另一个字符串比较 | (“Hello”).COMpareTo(“Hello”) |
Contains() | 是否包含制定子串 | (“Hello”).Contains(“ll”) |
CopyTo() | 拷贝子串至新字符串中 | $a = (“HelloWorld”).toCharArray()(“User!”).CopyTo(0,
$a, 6, 5)$a |
EndsWith() | 是否以制定子串结尾 | (“Hello”).EndsWith(“lo”) |
Equals() | 是否与另一个字符串相同 | (“Hello”).Equals($a) |
IndexOf() | 返回第一次匹配的所索引 | (“Hello”).IndexOf(“l”) |
IndexOfany() | 返回字符串中任意字符的首次匹配索引 | (“Hello”).IndexOfAny(“loe”) |
Insert() | 在指定位置插入字符串 | (“HelloWorld”).Insert(6,”brave “) |
GetEnumerator() | 枚举字符串中所有字符 | (“Hello”).GetEnumerator() |
LastIndexOf() | 字符的最后匹配位置 | (“Hello”).LastIndexOf(“l”) |
LastIndexOfAny() | 任意字符的最后匹配位置 | (“Hello”).LastIndexOfAny(“loe”) |
PadLeft() | 左边补齐空白是字符串至指定长度 | (“Hello”).PadLeft(10) |
PadRight() | 右边填充空白是字符串至指定长度 | (“Hello”).PadRight(10) + “World!” |
Remove() | 从指定位置开始移除指定长度 | (“PsTips”).Remove(2,2) |
Replace() | 替换指定字符串 | (“PsTips”).replace(“Ps”,”ps1″) |
Split() | 以指定分隔符切割字符串 | (“HelloWorld”).Split(“l”) |
StartsWith() | 是否以指定子串开始 | (“HelloWorld”).StartsWith(“He”) |
Substring() | 从指定位置取指定长度子串 | “HelloWorld”).Substring(4,3) |
ToCharArray() | 转换成字符数组 | (“HelloWorld”).toCharArray() |
ToLower() | 转换成小写 | (“HelloWorld”).toLower() |
ToLowerInVARiant
() | 以区域规则转换成小写 | (“HelloWorld”).ToUpPErInvariant() |
ToUpper() | 转换成大写 | (“HelloWorld”).ToUpper() |
ToUpperInvariant
() | 以区域规则转换成大写 | (“HelloWorld”).ToUpperInvariant
() |
Trim() | 移除字符串前后空格 | (” HelloWorld “). Trim() |
TrimEnd() | 移除字符串结尾的空格 | (“HelloWorld “). TrimEnd() |
TrimStart() | 移除字符串开始的空格 | (” HelloWorld”). TrimStart() |
Chars() | 返回指定位置的字符 | (“Hello”).Chars(0) |
以Split()为例来分析方法
在之前的章节中,我们已经知道可以通过Get-Member来查看一个对象中包含了那些可以被调用的方法。正好最为一个简单的回顾,来查看Split的定义。
PS C:\> ("jb51.net" | Get-Member Split).definition 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[] sepa rator, int count, System.StringSplitOptions options)
define属性可以获取方法参数定义,但是可读性比较坑爹。我们仍然用上面表格中的Replace方法,将分隔符稍作替换,即可增强可读性。
PS C:\> ("jb51.net" | Get-Member Split).definition.Replace("), ", ")`n")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)
之前说过反引号,类似高级语言中的转义符反斜杠。
从上面的输出可以发现Split有6种不同的调用方法,而之前可能更多的只使用过一个参数的方法。PowerShell在处理文本时,可能会碰到多个分隔符,而Split方法调用只须一次即可。
PS C:\> "https://www.js-code.com".split(":./")httpwwwpstipsnet
中间有空白,咋整,能移除吗,StringSplitOptions轻装上阵:
PS C:\> "https://www.js-code.com".split(":./",[StringSplitOptions]::RemoveEmptyEntries)httpwwwpstipsnet
之前有一个小算法题,移除字符串中相邻的重复的空格。在不考虑效率的前提下,可以使用Split先分割,分割后再将得到的元素以指定分隔符拼接。但是拼接用到的Join方法,并不属于string对象,而属于String类,也正是下面要讲的。
Text and Regular Expressions
原文: https://www.js-code.com/string-object-methods.htML
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: PowerShell String对象方法小结
本文地址: https://pptw.com/jishu/617771.html