To split the data you can use STRING_SPLIT - and then to put it into a single row you can use STRING_AGG. Unless you are on SQL Server 2022 then you won't be able to guarantee the order of the fields - you would need a custom string splitter that guarantees the order (look up DelimitedSplit8K).
With that said - why do you want these values in separate columns? The better approach is to split it into rows so you can more easily identify each value and perform comparisons between each value in the string.
The story behind this is files are read from a legacy webApp and 'translated' into a usable format, before being inserted into the application SQL tables. This is currently done by lengthy vb.net code. I was looking for a quicker more streamlined way of doing this.
I have looked at split_string but cannot get anything back apart from a null value. I don't need all the data from the strings, just a few selected bits to return back tot he calling application.