• powershell字符串操作


         字符串操作是powershell中重要的一项操作,学会使用字符串操作的一些常用方法会大大提高脚本编写效率,以下列出几个经常用到的字符串操作方法:


     前提:本人的powershell版本是

       

    1、字符串格式化

      在说字符串格式化,首先得说单双引号的作用,在powershell中双引号不会屏蔽变量,但单引号会屏蔽,示例如下:

    PS C:> $a = "i have a dream."
    
    PS C:> Write-Output "this is $a"
    this is i have a dream.
    PS C:> Write-Output 'this is $a'
    this is $a

      由上述示例我们可以看出,使用单引号会对变量进行转义,而使用双引号则会输出变量的值。

      接下来,再看看字符串格式化的使用,示例如下:  

    PS C:> $a = "i have a dream."
    
    PS C:> $b = " the variable is $a ,value is {0},there are {1} words" -f $a,4
    
    PS C:> Write-Output $b
     the variable is i have a dream. ,value is i have a dream.,there are 4 words
    

      字符串格式换中,使用{0},{1},{2}...来代替字符串中变量的位置,-f  后的参数与前面的位置变量相对应。

      接下来我们来探究一下花括号{} 内部的秘密:

    秘密一——固定行宽,即指定每次输入的字符长度,不足的空白补全。

    PS C:> $a = "name"
    
    PS C:> $b = "age"
    
    PS C:> $c = "sex"
    
    PS C:> $d = "{0,-15}{1,-15}{2,-15}"
    
    PS C:> $d = "{0,-15}{1,-15}{2,-15}" -f $a,$b,$c
    
    PS C:> Write-Output $d
    name           age            sex   
    

      {0,-15}表示的是第一的变量,占位字符总长度是15,“-”代表左对齐

      【注】{位置,±占位总长},其中“+”代表右对齐,“-”代表左对齐

    秘密二——将数字转换成百分数

    PS C:> "{0:p}" -f 0.31415926
    31.42%
    
    PS C:> "{0:p3}" -f 0.31415926
    31.416%
    
    PS C:> "{0:p5}" -f 0.31415926
    31.41593%
    PS C:> "{0:p}" -f "1.23"
    1.23
    

      百分数转换是用“p”来表示的,默认保留两位有效数字,若“p”后的数字是5,那么就代表保留五位有效数字。

      注意:百分数的转换针对的是整型和浮点型,不能对字符进行转换。

    秘密三——保留几位小数

    PS C:> "{0:n0}" -f 3.1415
    3
    PS C:> "{0:n}" -f 3.1415
    3.14
    PS C:> "{0:n3}" -f 3.1415
    3.142

      n代表要保留几位有效数字,默认是两位有效数字

    2、字符串替换

    PS C:> "i have a dream" -replace "dream","apple"
    i have a apple
    
    PS C:> "i have a dream" -replace "DREAM","apple"
    i have a apple
    
    PS C:> "i have a dream" -creplace "DREAM","apple"
    i have a dream
    
    PS C:> "i have a dream" -creplace "dream","apple"
    i have a apple
    

      字符串替换是“-replace”参数,-replace 可以不区分大小写,而-creplace严格按照大小写来匹配。

    3、包含

    PS C:> "i have a dream" -match "i"
    True
    
    PS C:> "i have a dream" -match "I"
    True
    
    PS C:> "i have a dream" -cmatch "i"
    True
    
    PS C:> "i have a dream" -cmatch "I"
    False 
    PS C:> "i have a dream".Contains("have")
    True
    
    PS C:> "i have a dream".Contains("Have")
    False

      判断某个字符串是否包含,返回True或False,“-cmatch”严格匹配大小写。

           其实-match的作用不止这些,下一节会提到它的扩展。

    4、过滤器

    PS C:> "3.1415926" -like "3.14*"
    True
    

      “-like”参数支持基本的正则表达式,*代表任意所有,?代表一个字符,.只代表. 

      判断字符串的格式是否符合用户所要求的,如上例,“3.14*”表示已以3.14开头的字符,匹配即为True。

    5、字符串分割(将字符串转成列表)

    PS C:> "i have a dream".Split()
    i
    have
    a
    dream
    
    PS C:> "i have a dream".Split("a")
    i h
    ve 
     dre
    m
    

      split的作用是将字符串中按照某个字符来分割成列表,默认以空格分割,支持多个分隔符

    PS C:> "http://www.baidu.com".Split('./:')
    http
    
    
    www
    baidu
    com
    

      上述例子是将某个字符以“.” “/” “:”来分割,分割出的结果含有两个空白,原因是“/”和“:”都是分隔符,当分割了“:”后,http会与之后的字符分为两行,此时用需要用“/”来分割,在此基础上再次分割,因此产生了空白行,空白行的取消方法如下:

    PS C:> "http://www.baidu.com".Split('./:',[StringSplitOptions]::RemoveEmptyEntries)
    http
    www
    baidu
    com
    

     6、字符串比较  

    PS C:> "i have a dream ".CompareTo("i have a dream") 
    1
    
    PS C:> "i have a dream ".CompareTo("i have a dream ") 
    0
    
    PS C:> "i have a dream ".CompareTo("i have a Dream ") 
    -1
    

      字符串比较不支持“-CompareTo”,使用方法是“.CompareTo”,严格区分大小写,完全一致才返回“0”。

    7、字符串的长度

    PS C:> "i have a dream".Length
    14
    

    8、插入新的字符串

    PS C:> "i have a dream".Insert(9,"new ")
    i have a new dream
    

      Insert的使用方法,在某个位置插入什么字符串,字符串的第一个字符的下标是0,从0开始算起,上述例子,在下位为(9+1)的位置插入“new ”字符串

    9、删除指定的字符串

    PS C:> "i have a dream".Remove(9,5)
    i have a 
    

      同上述例子,下标从0开始,在某个位置删除几个字符。

    10、将多个字符串按特定规则组成一个

    PS C:> "i","have","a","dream" -join(" ")
    i have a dream
    

      上述例子是将多个字符串以空格分割组成,同样也可以以其他符合组合,比如:

    PS C:> "10","20","30" -join(":")
    10:20:30 

    总结

      啊!

      没啥可总结的,用到过来查一下就ok了!

     

     

      

     

      

  • 相关阅读:
    Unix Vi 命令详解
    硬盘安装 solaris
    Oracle 10g RAC OCR 和 VotingDisk 的备份与恢复
    Unix vmstat 命令
    Unix Vi 命令详解
    How do I rename a data file
    Oracle 购买价格 和 服务费 计算方式
    Solaris 更改系统语言
    硬盘安装 solaris
    How do I rename a data file
  • 原文地址:https://www.cnblogs.com/zqj-blog/p/10044181.html
Copyright © 2020-2023  润新知