Fragensteller
String bestimmte Stelle ersetzen

Allgemeine Diskussion
-
Moin,
ich habe einen Ausgangsstring, der so aussieht: ";;;;"
Nun lese ich eine Textdatei aus, und wenn bestimmte Dinge in dieser Textdatei gefunden werden, sollen sie an eine bestimmte Stelle in diesem String eingefügt werden. Als Beispiel, wird sagen wir mal dass Wort "Powershell gefunden", soll das dritte Semikolon durch das Wort ersetzt werden, wird "Windows" gefunden, soll das zweite Semikolon durch "Windows" ersetzt werden.
Ist das irgendwie machbar?
- Typ geändert Denniver ReiningMVP, Moderator Donnerstag, 7. März 2013 15:54 ...
Alle Antworten
-
Function Replace-WordAtCount { [CmdletBinding()] Param ( [String]$Text, [ValidateRange(0,2147483647)] [Int]$Vorkommen, [String]$Suchen, [String]$Ersetzen ) # Startposition des suchvorganges im String $Position = 0 $AnzahlStellenGefunden = 0 # Erste stelle des suchtextes finden Do { $Position = $Text.IndexOf($Suchen, $Position) If($Position -eq -1){ #Funktion verlassen wenn nichts mehr gefunden wird ($Position = -1) # Der Text wird ohne Ersetzung zurückgegeben Return $Text } Else{ # $Position ist nicht -1 es wurde etwas gefunden # Zähler hochsetzen $AnzahlStellenGefunden++ } # Testen ob $Vorkommen = $AnzahlStellenGefunden If($AnzahlStellenGefunden -eq $Vorkommen) { # an der $Position ersetzen # text vor der Position ausschneiden $Text1 = $Text.Substring(0,$Position) # Text nach dem suchtext ausschneiden $Text2 = $Text.Substring($Position+$Suchen.Length) # neuen Text zusammmenkleben und zurückgeben Return $Text1 + $Ersetzen + $Text2 } # an der nächsten Position weitersuchen $Position++ } while($True) # endlos schleife wird durch If($Position -eq -1) beendet! } # das dritte vorkommen eines Semikolons ersetzen Replace-WordAtCount -Text ";;;;" -Suchen ';' -Vorkommen 3 -Ersetzen "JodelHose" # Das zweite vorkommen von Maria ersetzen Replace-WordAtCount -Text "Meine Frau Maria heisst Maria, weil Maria in der Bibel auch Maria hies!" -Suchen 'Maria' -Vorkommen 2 -Ersetzen "Josef"
Siehe in der String Dokumentation die Methoden!:
und :
http://msdn.microsoft.com/de-de/library/vstudio/system.string_methods.aspx
http://technet.microsoft.com/en-us/library/ee692804.aspx
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum!- Bearbeitet Peter Kriegel Mittwoch, 27. Februar 2013 16:49
-
Vielleicht sollte man hier erst einmal fragen, was denn wirklich erreicht werden soll.
Wenn Du bestimmte Zustände erfassen möchtest, wäre es flexibler, wenn Du Objekte anstatt Strings dazu benutzten würdest. Diese lassen sich dann auch einfach in CSV exportieren und wieder importieren.
$info = New-Object PSObject -Property @{ Windows = $false; PowerShell = $false; Photoshop = $false } $info.PowerShell = $true
-Raimund
-
Hast natürlich recht Raimund!
Da er aber das Semikolon ersetzen will, gehe ich davon aus, das es zumindest nach der Ersetzung keine CSV Daten mehr sind wenn es überhaupt mal welche waren und der OP weiss was CSV bedeutet und .... ;-))
Ich beschränkte mich hier einfach auf das direkte beantworten der Frage!Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum! -
Ja, Deine Antwort war bestimmt genau das richtige auf die Frage. Manche Fragen wird mir ganz komisch, weil der Ansatz schon krumm klingt.
Kann aber auch sein, daß der Ansatz völlig korrekt ist und mir das nur eigenartig klingt, weil mir Hintergrundinfos fehlen.
-Raimund
-
Gut, was möchte ich machen, ich möchte quasi aus Strings eine Art .csv zusammenbauen, dass ist schon richtig. Vielleicht denke ich auch einfach zu kompliziert und es gibt hier einen einfacheren Ansatz. Danke soweit für die umfangreichen Antworten :-)
-
Die Worte "Strings" und "eine Art von CSV" sind zu unkonkret!
Solls jetzt CSV sein oder nicht?
"Eine Art von .." ist wie: etwas schwanger! Das gibt es nicht!Wie sehen die Strings aus?
Willst du nun was ersetzen oder zusammensetzen? Oder was?
Versuchs mal deutlicher mit Beispielen!
Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
German ? Come to German PowerShell Forum!
- Bearbeitet Peter Kriegel Donnerstag, 28. Februar 2013 14:44
-
Hast du dein Problem gelöst oder brauchst du noch Hilfe? Wenn letzteres, dann erkläre bitte noch mal ganz genau mit Beispielen und Hintergrundinfos was du erreichen möchtest. Das ganze hört sich in der Tat so an, als könnte man das auch einfacher lösen.
Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".