В C# вы можете пометить строку как буквальный строковый литерал, поставив перед литералом символ @
.
В VB. NET у нас нет этой опции. Вместо этого можно было бы создать литерал XML и получить значение. Вот пример:
Dim input As String = <element> This is the first row
This is the second row
This is the third and final row in MyString
This is a string in one line.
</element>.Value().ToString()
Debugger.WriteLine(input.ToString())
Если значение не является stati c, например, вы получаете его откуда-то, то вы вынуждены перебирать строку в некоторой форме. Вы можете либо заменить, как в вашем примере, сделать Split and Join (аналогично вашему примеру), либо вам нужно будет выполнить итерацию вручную.
Итерация вручную может выглядеть более элегантно, используя LINQ, но вы ничего от этого не получите.
Суть в том, что если ваша строка имеет статус c, то вы можете использовать приведенный мною пример XML, в противном случае, если строка является динамической c тогда ваше решение совершенно уместно.
ОБНОВЛЕНИЕ Как отметил Эндрю Мортон, многострочные строковые литералы существуют со времени Visual Studio 2017. Следующее будет иметь тот же результат, что и мой XML буквальный пример:
Dim input As String = " This is the first row
This is the second row
This is a string in one line"
Debugger.WriteLine(input)