[.NET] Normaliseren string

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
Ik schrijf een PowerShell script dat gebruikersinformatie haalt uit verschillende bronnen en dit dan naar Active Directory doorstuurt. Wat me esthetisch stoort is dat sommige van die bronnen ALLES IN HOOFDLETTERS SCHRIJVEN, anderen dan weer alles in kleine letters en nog anderen zijn bijna random in hun hoofdlettergebruik. Het gaat over de naamvelden en over de functievelden: graag zou ik hebben dat ieder woord met een hoofdletter begint en voor de rest kleine letters is. Perfect is deze methode niet, omdat de mensen van adel (en die handvol Nederlanders die hier rondlopen) hun naam met een kleine letter geschreven moet worden; maar het ziet er al beter uit dan de huidige schreeuwerige output.

Maar... bestaat er een methode die dit kan? ToUpper en ToLower, ja, maar iets zoals ToCamelCase (wat de facto het juiste resultaat zou opleveren) vind ik toch niet meteen.

Op zich zou ik een functie kunnen schrijven die elk woord ToLower en dan het eerste karakter van dat woord ToUpper, maar behalve een aardige performance impact (x28 000 gebruikers) lijkt het mij ook dat ik het warm water opnieuw uitvind dan. Welke .NET programmeur weet of dit al dan niet bestaat? Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Cyphax
  • Registratie: November 2000
  • Laatst online: 08:34

Cyphax

Moderator LNX
Bedoel je zoiets als hier staat beschreven?
C#:
1
(Get-Culture).TextInfo.ToTitleCase("string")

Saved by the buoyancy of citrus


Acties:
  • 0 Henk 'm!

  • YellowOnline
  • Registratie: Januari 2005
  • Laatst online: 28-03-2023

YellowOnline

BEATI PAVPERES SPIRITV

Topicstarter
Cyphax schreef op dinsdag 02 oktober 2012 @ 14:36:
Bedoel je zoiets als hier staat beschreven?
C#:
1
(Get-Culture).TextInfo.ToTitleCase("string")
Aha, ToTitleCase, dat klinkt als de oplossing op mijn vraag. Ik ga zien hoe ik het kan implementeren, maar heel erg bedankt hoor!

Edit: Werkt perfect. Dankuwel! Snippet:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$colBlueCoatUsers = @()
ForEach ($User in $Users)
        {
        $objBlueCoatUsers = New-Object System.Object
        $objBlueCoatUsers | Add-Member Noteproperty -Name OU -Value $((Get-ADUser $User.accountName).DistinguishedName.Split(",")[3].Replace("OU=",""))
        $objBlueCoatUsers | Add-Member Noteproperty -Name Username -Value $User.accountName
        ForEach ($Role in $Roles)
            {
            If (($Role.OU -EQ $objBlueCoatUsers.OU) -And ($Role.Title.ToLower() -EQ $User.title.ToLower()))
                {
                $objBlueCoatUsers | Add-Member Noteproperty -Name Access -Value $Role.Level
                }
            }
        $objBlueCoatUsers | Add-Member Noteproperty -Name "Last Name" -Value (Get-Culture).TextInfo.ToTitleCase($User.lastName.ToLower())
        $objBlueCoatUsers | Add-Member Noteproperty -Name "First Name" -Value (Get-Culture).TextInfo.ToTitleCase($User.firstName.ToLower())
        $objBlueCoatUsers | Add-Member Noteproperty -Name "Function" -Value (Get-Culture).TextInfo.ToTitleCase($User.title.ToLower())
        $objBlueCoatUsers | Add-Member Noteproperty -Name "E-mail" -Value $User.mail.ToLower()
        $objBlueCoatUsers | Add-Member Noteproperty -Name "National Number" -Value $User.rijksregisterNr
        $colBlueCoatUsers += $objBlueCoatUsers
        }


Edit2: Bizar, je moet eerst .ToLower() doen alvorens het werkt.

[ Voor 59% gewijzigd door YellowOnline op 02-10-2012 16:14 ]


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Het is wel apart, maar staat wel vermeld in de manual:
Generally, title casing converts the first character of a word to uppercase and the rest of the characters to lowercase. However, this method does not currently provide proper casing to convert a word that is entirely uppercase, such as an acronym.

https://oneerlijkewoz.nl
Het ergste moet nog komen / Het leven is een straf / Een uitgestrekte kwelling van de wieg tot aan het graf