powershell中“string”由“char”组成。“char”是指单个字符。它是一个unicode字符(.net用utf16),占用2个字节空间。
比如:
'哈哈a1'.length #中文也是占用一个字符位置。
4
string中文手册:
https巨://硬docs.家microsoft.com/zh-cn/dotnet/api/system.string?view=netframework-4.8
注意:
.net的string对象,和java、python相同。都是【不可变】对象。这就是说字符串相加、替换、插入、等都需要重新建立对象。
频繁改变字符串很慢,若你需要频繁改变字符串,你需要stringbuilder对象。
https巨://硬docs.家microsoft.com/zh-cn/dotnet/api/system.text.stringbuilder?view=netframework-4.8
183qq173群532分享
-----------------------【string属性】-----------------------
Length 含有字符的数量。
-----------------------【string方法】-----------------------
[System.String]::CopyTo( 2, 目标字符数组, 开始数, 长度数 )
将指定数目的字符从此实例中的指定位置复制到 Unicode 字符数组中的指定位置。
=================
判断是不是string类型
1 -is [string]
False
'1' -is [string]
True
(1).tostring() -is [string]
True
=================
'abc'.Contains('ab')
True
'abc'.Contains('Ab')
False#判断字符串,包含另一个字符串,区分大小写
'abc'.Contains('Ab'.tolower())
True#忽略大小写
=================
$a = " `t "
[string]::IsNullOrWhiteSpace($a) #判断是否只有空字符串,加空白字符
True
[string]::IsNullOrEmpty($a) #判断是否只有空字符串
False
=================
$返回 = [System.String]::Format(System.IFormatProvider,串,System.Object)格式化
string.Format("{0:X000}", 12) C
string.Format("{0:000.000}", 12.2) 012.200
(56789 / 100.0).ToString("#.##"); //result: 567.89
(56789 / 100).ToString("#.##"); //result: 567
string.Format("{0:###.##}", 12394.039) //结果为:12394.04
string.Format("{0:####.#}", 194.039) //结果为:194
string.Format("{0,-50}", theObj);//格式化成50个字符,原字符左对齐,不足则补空格
string.Format("{0,50}", theObj);//格式化成50个字符,原字符右对齐,不足则补空格
=================
.IndexOf()某字符串在此串中第一次出现的位置串,开始地址
.IndexOfAny()此字符串和某字符数组中的任意元素包含测试,包含则返回第一次出现的位置。
.LastIndexOf()char,string某字符串在此串中最后一次出现的位置
.LastIndexOfAny() char[]
=================
.Insert(位置,串)串中插入某串
[System.String]::Concat()连接。
$数组 = 'aaa','bbb','3434454','haha'
$另一个join的用法_即数组连接成了字符串 = [system.string]::Concat($数组)
$另一个join的用法_即数组连接成了字符串
[System.String]::join() 字符数组中每个元素间,插入某串,成为一个新的字符串。
.split()按照【字符数组】,【字符串数组】拆分。可以设定返回最多返回数。
[System.StringSplitOptions]::RemoveEmptyEntries
.Split('',[System.StringSplitOptions]::RemoveEmptyEntries) #可以同时去除所有【空格】和【tab】和【中文全角空格】哦
=================
.trim()去除头尾空格
.trim('aaa')先把aaa变成数组,然后依次去除
.TrimStart() 删除头某字符串【数组】中的所有字符
.TrimEnd()删除尾某字符串【数组】
=================
.ToCharArray()字符串,转字符串数组
.ToCharArray(Int32,Int32)
.GetEnumerator() 把字符串打散,返回字符数组,常用于foreach
=================
取子串,和去掉子串:
.Substring()取子串,(开始位置从0开始,长度)
.Substring(开始,长度)
'powershell传教士原创'.Substring(5)#跳过前5个,即01234,从第6个字符开始,取全部子串
shell传教士原创
'powershell传教士原创'.Substring(6,7) #跳过前6个字符,取后7个字符
hell传教士
.Replace()替换
.Remove(开始,长度) 删除子串
'powershell传教士原创'.Remove(6,7) #跳过前6个字符,删后7个字符。和substring相反
powers原创
=================
.StartsWith('abc')确定本串开头是否于某串匹配
.EndsWith()确定本串结尾是否于某串匹配
=================
'abc'.PadLeft(5,"哈") #在本字符串左侧用空格或字符填充n个"哈",使字符串总长度达到5。达到右对齐的目的。
哈哈abc
.PadRight()
=================
不常用的方法:
比较2个字符串
Compare(String, String)
NET提供了string interning的功能,直译过来就是字符串拘留,驻留,缓存。
所谓的字符串拘留池(intern pool)其实是一张哈希表,键是字符串字面量,值是托管堆上字符串对象的引用。
但若该表过大,则会对性能造成负面影响。
[System.String]::Intern('xxx') #缓存字符串xxx
在暂存池中搜索的字符串,如果暂存了 str,则返回系统对其的引用;否则返回对值为 str 的字符串的新引用。
[System.String]::IsInterned('xxx') #没缓存,就返回$null。缓存了,就返回xxx
比如:
'哈哈a1'.length #中文也是占用一个字符位置。
4
string中文手册:
https巨://硬docs.家microsoft.com/zh-cn/dotnet/api/system.string?view=netframework-4.8
注意:
.net的string对象,和java、python相同。都是【不可变】对象。这就是说字符串相加、替换、插入、等都需要重新建立对象。
频繁改变字符串很慢,若你需要频繁改变字符串,你需要stringbuilder对象。
https巨://硬docs.家microsoft.com/zh-cn/dotnet/api/system.text.stringbuilder?view=netframework-4.8
183qq173群532分享
-----------------------【string属性】-----------------------
Length 含有字符的数量。
-----------------------【string方法】-----------------------
[System.String]::CopyTo( 2, 目标字符数组, 开始数, 长度数 )
将指定数目的字符从此实例中的指定位置复制到 Unicode 字符数组中的指定位置。
=================
判断是不是string类型
1 -is [string]
False
'1' -is [string]
True
(1).tostring() -is [string]
True
=================
'abc'.Contains('ab')
True
'abc'.Contains('Ab')
False#判断字符串,包含另一个字符串,区分大小写
'abc'.Contains('Ab'.tolower())
True#忽略大小写
=================
$a = " `t "
[string]::IsNullOrWhiteSpace($a) #判断是否只有空字符串,加空白字符
True
[string]::IsNullOrEmpty($a) #判断是否只有空字符串
False
=================
$返回 = [System.String]::Format(System.IFormatProvider,串,System.Object)格式化
string.Format("{0:X000}", 12) C
string.Format("{0:000.000}", 12.2) 012.200
(56789 / 100.0).ToString("#.##"); //result: 567.89
(56789 / 100).ToString("#.##"); //result: 567
string.Format("{0:###.##}", 12394.039) //结果为:12394.04
string.Format("{0:####.#}", 194.039) //结果为:194
string.Format("{0,-50}", theObj);//格式化成50个字符,原字符左对齐,不足则补空格
string.Format("{0,50}", theObj);//格式化成50个字符,原字符右对齐,不足则补空格
=================
.IndexOf()某字符串在此串中第一次出现的位置串,开始地址
.IndexOfAny()此字符串和某字符数组中的任意元素包含测试,包含则返回第一次出现的位置。
.LastIndexOf()char,string某字符串在此串中最后一次出现的位置
.LastIndexOfAny() char[]
=================
.Insert(位置,串)串中插入某串
[System.String]::Concat()连接。
$数组 = 'aaa','bbb','3434454','haha'
$另一个join的用法_即数组连接成了字符串 = [system.string]::Concat($数组)
$另一个join的用法_即数组连接成了字符串
[System.String]::join() 字符数组中每个元素间,插入某串,成为一个新的字符串。
.split()按照【字符数组】,【字符串数组】拆分。可以设定返回最多返回数。
[System.StringSplitOptions]::RemoveEmptyEntries
.Split('',[System.StringSplitOptions]::RemoveEmptyEntries) #可以同时去除所有【空格】和【tab】和【中文全角空格】哦
=================
.trim()去除头尾空格
.trim('aaa')先把aaa变成数组,然后依次去除
.TrimStart() 删除头某字符串【数组】中的所有字符
.TrimEnd()删除尾某字符串【数组】
=================
.ToCharArray()字符串,转字符串数组
.ToCharArray(Int32,Int32)
.GetEnumerator() 把字符串打散,返回字符数组,常用于foreach
=================
取子串,和去掉子串:
.Substring()取子串,(开始位置从0开始,长度)
.Substring(开始,长度)
'powershell传教士原创'.Substring(5)#跳过前5个,即01234,从第6个字符开始,取全部子串
shell传教士原创
'powershell传教士原创'.Substring(6,7) #跳过前6个字符,取后7个字符
hell传教士
.Replace()替换
.Remove(开始,长度) 删除子串
'powershell传教士原创'.Remove(6,7) #跳过前6个字符,删后7个字符。和substring相反
powers原创
=================
.StartsWith('abc')确定本串开头是否于某串匹配
.EndsWith()确定本串结尾是否于某串匹配
=================
'abc'.PadLeft(5,"哈") #在本字符串左侧用空格或字符填充n个"哈",使字符串总长度达到5。达到右对齐的目的。
哈哈abc
.PadRight()
=================
不常用的方法:
比较2个字符串
Compare(String, String)
NET提供了string interning的功能,直译过来就是字符串拘留,驻留,缓存。
所谓的字符串拘留池(intern pool)其实是一张哈希表,键是字符串字面量,值是托管堆上字符串对象的引用。
但若该表过大,则会对性能造成负面影响。
[System.String]::Intern('xxx') #缓存字符串xxx
在暂存池中搜索的字符串,如果暂存了 str,则返回系统对其的引用;否则返回对值为 str 的字符串的新引用。
[System.String]::IsInterned('xxx') #没缓存,就返回$null。缓存了,就返回xxx