Werte vergleichen die nicht 100 Prozent gleich sind
Hallo,
gibt es eine Möglichkeit Ordnernamen oder einfach generell Texte oder Werte zu vergleichen auch wenn sie nicht 100%ig übereinstimmen?
Angenommen man hat folgende Sätze:
Berlin ist eine schöne Stadt 2010 xcv
Berlin ist eine schöne Stadt-dft
Das in diesem fall erkannt wird "oh hey, das ist im prinzip das gleiche nur das sich die Werte in x % unterscheiden.
geht sowas überhaupt?
gibt es eine Möglichkeit Ordnernamen oder einfach generell Texte oder Werte zu vergleichen auch wenn sie nicht 100%ig übereinstimmen?
Angenommen man hat folgende Sätze:
Berlin ist eine schöne Stadt 2010 xcv
Berlin ist eine schöne Stadt-dft
Das in diesem fall erkannt wird "oh hey, das ist im prinzip das gleiche nur das sich die Werte in x % unterscheiden.
geht sowas überhaupt?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 318162
Url: https://administrator.de/forum/werte-vergleichen-die-nicht-100-prozent-gleich-sind-318162.html
Ausgedruckt am: 16.02.2025 um 21:02 Uhr
4 Kommentare
Neuester Kommentar
Hi
gibt es eine Möglichkeit Ordnernamen oder einfach generell Texte oder Werte zu vergleichen auch wenn sie nicht 100%ig übereinstimmen?
Ja
Angenommen man hat folgende Sätze:
Berlin ist eine schöne Stadt 2010 xcv
Berlin ist eine schöne Stadt-dft
Das in diesem fall erkannt wird "oh hey, das ist im prinzip das gleiche nur das sich die Werte in x % unterscheiden.
geht sowas überhaupt?
Berlin ist eine schöne Stadt 2010 xcv
Berlin ist eine schöne Stadt-dft
Das in diesem fall erkannt wird "oh hey, das ist im prinzip das gleiche nur das sich die Werte in x % unterscheiden.
geht sowas überhaupt?
Ja
Stickwort: Strings vergleichen
https://www.windowspro.de/script/strings-powershell-ersetzen-vergleichen ...
Wenn du danach die % ausgeben willst, zähl die Zeichen mit und das ausrechnen der % sollte kein Problem sein. =)
Servus,
Eine Funktion für Powershell findest du hier:
Levenshtein Distance in Windows PowerShell
Grüße Uwe
Stickwort: Strings vergleichen
ja nee, das richtige Verfahren dafür nennt sich Levenshtein-Distanz.Eine Funktion für Powershell findest du hier:
Levenshtein Distance in Windows PowerShell
Grüße Uwe
Das funktioniert wenn man weiß welche Teile Anfang/Ende gleich sind
, bei mehreren unterschiedlichen Namen sehr sehr aufwändig bis unmöglich, mit der Levenshtein-Distanz ist das wesentlich zuverlässiger, da man wirklich die max. Anzahl der Unterscheidungen egal an welcher Stelle des Strings festlegen kann.
Hier ein Beispiel mit dem Levenshtein Algorithmus:
Hier ein Beispiel mit dem Levenshtein Algorithmus:
function Get-StringDifferences{
param([string] $first, [string] $second, [switch] $ignoreCase)
$cost = 0
$l1 = $first.length
$l2 = $second.length
if($l1 -eq 0){return $l2}
if($l2 -eq 0){return $l1}
if($ignoreCase.IsPresent){
$first = $first.tolowerinvariant()
$second = $second.tolowerinvariant()
}
$distance = new-object -type 'int[,]' -arg ($l1+1),($l2+1)
0..$l1 | %{$distance[$_,0] = $_}
0..$l2 | %{$distance[0,$_] = $_}
for($r = 1; $r -le $l1;$r++){
for($c = 1; $c -le $l2;$c++){
$cost = @{$true=0;$false=1}[($second[$c-1] -ceq $first[$r-1])]
$tmin = [System.Math]::Min(([int]$distance[($r-1),$c]+1) , ([int]$distance[$r,($c-1)]+1))
$distance[$r,$c] = [System.Math]::Min($tmin, ([int]$distance[($r-1),($c-1)] + $cost))
}
}
return $distance[$l1, $l2];
}
$s1 = 'Berlin ist eine schöne Stadt 2010 xcv'
$s2 = 'Berlin ist eine schöne Stadt-dft'
Write-Host "Anzahl der Unterschiede:"
Get-StringDifferences $s1 $s2 -ignoreCase