2

所以我在玩比较对象,它可以很好地比较文件。但是只有字符串呢?有没有办法找到字符串之间的区别?CompareTo() 可以很好地报告存在差异,但不能报告差异是什么。例如:

PS:> $a = "PowerShell rocks"
PS:> $b = "Powershell rocks"
PS:> $a.CompareTo($b)
1
PS:> Compare-Object -ReferenceObject $a -DifferenceObject $b
PS:>

什么都没有回来。

有什么方法可以让我知道字符串之间的实际区别,而不仅仅是有区别吗?

4

1 回答 1

4

也许是这样的:

function Compare-String {
  param(
    [String] $string1,
    [String] $string2
  )
  if ( $string1 -ceq $string2 ) {
    return -1
  }
  for ( $i = 0; $i -lt $string1.Length; $i++ ) {
    if ( $string1[$i] -cne $string2[$i] ) {
      return $i
    }
  }
  return $string1.Length
}

如果两个字符串相等或两个字符串之间的第一个差的位置,该函数返回 -1。如果您想要不区分大小写的比较,则需要使用-eq代替-ceq-ne代替-cne

于 2014-08-06T22:27:33.917 回答