kaeckchen
Goto Top

Windows PowerShell - Ein bestimmtes Zeichen in einem Wort in Großschreibung

Hallo werte Gemeinde,

Mittels "ToUpper()" kann ich zwar ein ganzes Wort oder einen ganzen String groß schreiben. Kann ich aber auch ein- oder mehrere, bestimmte Zeichen groß schreiben, so dass die restlichen Zeichen unberührt bleiben?

Beispiel: "muellerm" soll zu "MuellerM" geändert werden

mfG KR

Content-ID: 209033

Url: https://administrator.de/forum/windows-powershell-ein-bestimmtes-zeichen-in-einem-wort-in-grossschreibung-209033.html

Ausgedruckt am: 22.04.2025 um 20:04 Uhr

Snowman25
Snowman25 03.07.2013 um 12:01:10 Uhr
Goto Top
Hallo @kaeckchen,

klar, wenn du den String davor auseinandernimmst und danach wieder zusammensetzt.
Schreib dir doch 2 Funktionen, welche einen String und eine Position entgegennehmen und dann auf die entsprechende Stelle ein toUpper oder toLower macht.

Gruß,
@Snowman25
kaeckchen
kaeckchen 03.07.2013 um 12:35:27 Uhr
Goto Top
Danke für die Antwort. Das Vorgehen ist klar. Ich hätte die Frage etwas präzisieren müssen. Ich wollte eigentlich erfragen, ob das Ganze in einem Befehl oder in einer Zeile möglich ist.

mfG KR
Snowman25
Snowman25 03.07.2013 aktualisiert um 13:22:57 Uhr
Goto Top
Angenommen, du hast muellerm und möchtest daraus MuellerM machen (1. und letzen Buchstaben groß), dann geht das so:
$name = "muellerm"  
$name = $($name.substring(0,1).ToUpper() + $name.substring(1,($name.Length-2)) + $name.substring($name.Length-1).ToUpper())

Gruß,
@Snowman25
kaeckchen
kaeckchen 03.07.2013 um 13:15:52 Uhr
Goto Top
Hallo und vielen Dank für die Anregung - das funktioniert genau so, wie ich es mir vorstelle.

mfG KR
colinardo
colinardo 03.07.2013 aktualisiert um 15:50:29 Uhr
Goto Top
Hallo kaekchen,
und wenn du das Objekt [System.String] mit einer Funktion erweiterst steht dir die Funktion in Zukunft bei jedem String zur Verfügung. Das ganze machst du so :

Zuerst erstellst du eine Datei namens "StringExtension.ps1xml" im Verzeichnis C:\Windows\System32\WindowsPowerShell\v1.0 mit folgenden Inhalt:
<?xml version="1.0" encoding="utf-8" ?>  
<Types>
  <Type>
    <Name>System.String</Name>
      <Members>
        <ScriptMethod>
          <Name>upperFirstandLast</Name>
          <Script>
                $($this.substring(0,1).ToUpper() + $this.substring(1,($this.Length-2)) + $this.substring($this.Length-1).ToUpper())
          </Script>
      </ScriptMethod>
    </Members>
  </Type>
  <Type>
    <Name>System.String</Name>
      <Members>
        <ScriptMethod>
          <Name>toUpperByIndex</Name>
          <Script>
		$index = $args
		$arr = $this.toCharArray()
		$arr[$index] = $arr[$index].toString().toUpper()
		[System.String]::Join($strFinal,$arr)
		$strFinal
          </Script>
      </ScriptMethod>
    </Members>
  </Type>
</Types> 
dann öffnest du dein Powershell Profil-Script(meistens unter "C:\Users\[USERNAME]\Documents\WindowsPowerShell\Microsoft.Powershell_profile.ps1")
wenn die Datei noch nicht vorhanden ist, legst du sie an.
Dann fügst folgende Zeile hinzu und speicherst die Datei:
Update-TypeData -PrependPath "$pshome\StringExtension.ps1xml"  

Ab jetzt ist in jeder neuen Powershell-Session bei jedem [String]-Objekt die Funktion upperFirstandLast() vorhanden die den ersten und letzten Buchstaben groß macht.
Zusätzlich noch die Funktion toUpperByIndex() mit dem man direkt den Index des Buchstabens angeben kann der groß geschrieben werden soll.

Beispiele:
("muellerm").upperFirstandLast()
= MuellerM
("muellerm").toUpperByIndex(1)
= mUellerm

Grüße Uwe
kaeckchen
kaeckchen 03.07.2013 um 16:02:40 Uhr
Goto Top
Vielen vielen Dank Uwe.....

mfG KR