PowerShell String对象方法小结

页面导航:首页 > 脚本专栏 > PowerShell > PowerShell String对象方法小结

PowerShell String对象方法小结

来源:互联网 作者:脚本宝典 时间:2015-07-20 18:47 【

从之前的章节中,我们知道PowerShell将一切存储在对象中,那这些对象中包含了一系列中的称之为方法的指令。默认文本存储在String对象中,它包含了许多非常有用的处理文本的命令。例

从之前的章节中,我们知道PowerShell将一切存储在对象中,那这些对象中包含了一系列中的称之为方法的指令。默认文本存储在String对象中,它包含了许多非常有用的处理文本的命令。例如,要确定一个文件的扩展名,可以使用LastIndexOf()获取最后一个字符“.”的位置,继续使用Substring()获取扩展名子串。

?

1
2
3
PS> $path = "C:\prefs.js"
PS> $path.Substring( $path.LastIndexOf(".")+1 )
Js

另外一条途径,使用Split方法,对文件的完整名称进行分割,得到一个字符串数组,取最后一个元素,PowerShell中可以通过索引-1来获取数组中最后一个元素。

?

1
2
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的定义。

?

1
2
3
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方法,将分隔符稍作替换,即可增强可读性。

?

1
2
3
4
5
6
7
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方法调用只须一次即可。

?

1
2
3
4
5
6
PS C:\> "http://www.jb51.net".split(":./")
http
 
www
pstips
net

中间有空白,咋整,能移除吗,StringSplitOptions轻装上阵:

?

1
2
3
4
5
PS C:\> "http://www.jb51.net".split(":./",[StringSplitOptions]::RemoveEmptyEntries)
http
www
pstips
net

之前有一个小算法题,移除字符串中相邻的重复的空格。在不考虑效率的前提下,可以使用Split先分割,分割后再将得到的元素以指定分隔符拼接。但是拼接用到的Join方法,并不属于string对象,而属于String类,也正是下面要讲的。


Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<