2

そのため、Compare-Object をいじっていますが、ファイルの比較には問題なく機能します。しかし、文字列だけではどうでしょうか? 文字列の違いを見つける方法はありますか? 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
}

2 つの文字列が等しい場合、または 2 つの文字列の最初の相違点の位置である場合、関数は -1 を返します。大文字と小文字を区別しない比較が必要な場合は、-eq代わりに-ceqand-neの代わりに使用する必要があります-cne

于 2014-08-06T22:27:33.917 に答える