Windows PowerShell有关字符串的事

上一篇 / 下一篇  2010-03-24 11:26:02 / 个人分类:Windows PowerShell

一件让WindowsPowerShell同其它外壳程序(特别是传统的Unix外壳程序)区别开来的事是:现在大多数操作系统外壳程序是基于文本的,Windows PowerShell是基于对象的。如同你可能期待的,这两种观点有各自的优缺点;然而通常意义上,公正的说比起它的操作系统同伴们的外壳程序而言,Windows PowerShell需要更少的文本及字符串操作。
  那么这意味永远不需要在Windows PowerShell中处理文本和字符串操作吗?不,抱歉:文本及字符串操作对于任何一个写系统管理脚本的人来说仍然是需要的。幸运的是,Windows PowerShell(及.NET Framework)包含了各种为了操作文本及字串值的所有漂亮的小功能的集合。让我们看一些你能针对文本所做的有趣的事。因此,我们准备主要处理以下变量及值:
  $a = "Scripting Guys"
  $b = "scripting guys"
  比较两个字符串值
  那么什么样的事需要你来处理字符串值呢?好的,一件非常普通的任务就是比较这些值。以下命令比较了字符串变量$a和$b,然后把结果储存在第三个变量($d):
  $d = $a.CompareTo($b)
  如你所见,我们简单的使用$a及调用CompareTo方法,并传递第二个字符串($b),作为方法参数。如果CompareTo返回0,那意味着两个字符串相等。0以外的任何值意味着两个字符串不相等。(技术上来说,-1意味着$a小于$b,1意味着$a大于$b)
  当我们运行这个命令并回显$d的值的时候我们会得到以下输出:
  1
  这意味这两个字符串不相等。
  怎么会这样?你们的一些人也许会认为两个字符串没什么不同的。好的这和你是否进行大小写敏感比较相关(大写的S被认为和小写的s不同),或者大小写不敏感比较,这意味着大写S同小写s被认为是一样的。
  Compare方法总是进行大小写敏感比较。为了进行大小写不敏感比较,那么使用以下命令作为替代:
  $d = [string]::Compare($a, $b, $True)
  在本例中,我们使用.Net Framework的System.String类(也就是[string]语法所指出的)。我们然后调用静态方法(以两个冒号::指出)Compare,并传递给这个方法三个参数:两个我们想要比较的字符串($a及$b)然后是布尔值$True。第三个参数告诉Compare方法是否在进行比较时忽略字母的大小写。值$True意味着应当忽略字母的大小写。运行这个命令以后$d的值将会等于:
  0
  这意味着,在你忽视大小写的情况下,两个字符串是相等的。
  你也能使用StartsWith及EndsWith方法来快速确定在指定值的开始或结束是否包含指定字符串。想要知道$a的值的开头是否包含字符串Script?那么使用这个命令吧:
  $d = $a.StartsWith("Script")
  结果是,如果目标文本被找到$d将会是True,如果没有则为False。
  或者检查在值尾是否有目标文本:
  $d = $a.EndsWith("Script")
  注意这些比较也是大小写敏感的。如果要做大小写不敏感比较则使用下面这个类似的命令:
  $d = $a.ToLower().StartsWith("script")
  ToLower方法代表什么呢?我们马上会解释的。

TAG:

 

评分:0

我来说两句

Open Toolbar