[Powershell] verdwenen characters bij een trim

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Furinax
  • Registratie: Augustus 2003
  • Laatst online: 25-05-2024

Furinax

It'll only hurt until you die

Topicstarter
Beste Tweakers,

Ik ben niet zozeer opzoek naar een oplossing, want die is er al, maar meer naar een verklaring van het volgende gedrag binnen Powershell.

Mijn vraag
Er lijkt 'iets' in Powershell te gebeuren met de combinatie "il@" en het trim commando.

Voorbeeld:
$t = "voornaam.achternaam@klant.nl"
$t.trim('@klant.nl')
Resultaat:
voornaam.achternaam

Als ik bovenstaande scriptje nogmaals draai met "il" in de achternaam gebeurd het volgende:
$t = "voornaam.buil@klant.nl"
$t.trim('@klant.nl')
Resultaat:
voornaam.bu

Ik kan geen logische verklaring voor vinden voor de missende "il" en ik hoop dat iemand mij kan uitleggen waar dit vandaan komt.

Relevante software en hardware die ik gebruik
Powershell 5.1 op Windows 10
Powershell 5.1 op Windows 2016

Alvast bedankt!
Een verdwaasde Powershell scripter 8)7

Beste antwoord (via Furinax op 24-01-2020 15:15)


  • RobIII
  • Registratie: December 2001
  • Laatst online: 21:54

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Volgens mij doet 't precies wat 't moet doen :? Ik denk dat je een andere verwachting van trim() hebt dan dat 't werkelijk doet ;)

Trim verwacht als argument een char array met alle karakters die verwijderd moeten worden aan het begin of eind van de string. Probeer eens:

PowerShell:
1
2
3
4
5
$t = "lalavoornaam.buil@klant.nl"
$t.trim("@klant.nl")
voornaam.bui
$t.trim("lantk.nl@")
voornaam.bui

[ Voor 38% gewijzigd door RobIII op 24-01-2020 15:13 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Alle reacties


Acties:
  • Beste antwoord
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Laatst online: 21:54

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Volgens mij doet 't precies wat 't moet doen :? Ik denk dat je een andere verwachting van trim() hebt dan dat 't werkelijk doet ;)

Trim verwacht als argument een char array met alle karakters die verwijderd moeten worden aan het begin of eind van de string. Probeer eens:

PowerShell:
1
2
3
4
5
$t = "lalavoornaam.buil@klant.nl"
$t.trim("@klant.nl")
voornaam.bui
$t.trim("lantk.nl@")
voornaam.bui

[ Voor 38% gewijzigd door RobIII op 24-01-2020 15:13 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Furinax
  • Registratie: Augustus 2003
  • Laatst online: 25-05-2024

Furinax

It'll only hurt until you die

Topicstarter
waarom verwijderd trim dan il@klant.nl in plaats van alleen @klant.nl ? (te snel gepost :D)

Oke, duidelijk antwoord. Dit had ik zelf niet kunnen bedenken :)

[ Voor 40% gewijzigd door Furinax op 24-01-2020 15:15 ]


Acties:
  • 0 Henk 'm!

  • mhoogendam
  • Registratie: Oktober 2002
  • Laatst online: 16-05 21:11
PowerShell:
1
2
3
$t.trim('@klant.nl')

voornaam.bui


Met trim haal je alle karakters weg die je aangeeft (@ K L A N T ), dus ook de L van .buil.
Commando wat jij zoekt is replace.
PowerShell:
1
 $t -replace '@klant.nl', ''