#PSTip Inserting characters at a specified string index position

How do you turn ‘20130701’ to ‘2013-07-01’?

There are many ways to tackle this, breaking it into pieces (substring) and joining it back with a dash, use some regex fu to manipulate it, parse it as a DateTime and format it and so on. Here’s another way that uses the String.Insert method.

The Insert() method takes two arguments–the index position of the insertion and the string to insert.

PS> "".Insert.OverloadDefinitions
string Insert(int startIndex, string value)

In our example we need to add a dash after the year part which is the fourth character.

PS> $s = '20130701'
PS> $s = $s.Insert(4,'-')
PS> $s
2013-0701

Now we can add the second dash right after the month/day part (depending on your culture):

PS> $s = $s.Insert(7,'-')
PS> $s
2013-07-01

Or we can insert the dashes in two consecutive method calls:

PS> '20130701'.Insert(4,'-').Insert(7,'-')
2013-07-01
Share on: