Welcome to the matrix. In reality, select-string returns a matchinfo object. The default custom view puts filename and linenumber in front of the result “line” joined by colons. This is defined in a .format.ps1xml file somewhere, I think $pshome\PowerShellCore.format.ps1xml. Get-date also returns a custom view by default. Most commands have a default table view.
get-childitem file | select-string hi | format-custom
file:1:hi
get-childitem file | select-string hi | format-list
IgnoreCase : True
LineNumber : 1
Line : hi
Filename : file
Path : C:\Users\admin\foo\file
Pattern : hi
Context :
Matches : {0}
get-childitem file | select-string hi | % line
hi