Убрать пробелы в новой строке, но сохранить строку - PullRequest
0 голосов
/ 04 мая 2020

I sh для удаления пробелов из строк, которые не содержат текст, но не для удаления строки. Поскольку пробел может быть трудно идентифицировать, я заменим пробел на «#» (символ хэстэга), чтобы продемонстрировать пример проще. Строка выглядит примерно так:

"This is
########a long string
with many lines
#######
and the above is empty
####this is empty
#############
#######hello"

I wi sh, что вывод удалит пробелы в строках, которые содержат только пробел. Я все еще использую "#" (символ хэстэга) для демонстрации пробелов. Окончательный результат должен выглядеть следующим образом:

"This is
########a long string
with many lines

and the above is empty
####this is empty

#######hello"

Без символа хэштега, выступающего в качестве пробела, ожидаемый результат должен выглядеть следующим образом:

"This is
        a long string
with many lines

and the above is empty
    this is empty

       hello"

Итак, чтобы уточнить, я wi sh для удаления пробельных символов в строке, которая не содержит текста, но не для удаления строки.

Ответы [ 3 ]

1 голос
/ 04 мая 2020

Используя ваш пример с окто-типами (еще одно имя для #) и заменяя их пробелами в коде, мы можем использовать функцию String.IsNullOrWhiteSpace, чтобы проверять такие строки и заменять их пустыми строками:

Module Module1

    Sub Main()
        Dim s = "This is
########a long string
with many lines
#######
and the above is empty
####this is empty
#############
#######hello"
        s = s.Replace("#", " ")
        Dim t = String.Join(vbCrLf, s.Split({vbCrLf}, StringSplitOptions.None).
                            Select(Function(a) If(String.IsNullOrWhiteSpace(a), "", a)))

        Console.WriteLine(t)

        Console.ReadLine()

    End Sub

End Module

Выходы:

This is
        a long string
with many lines

and the above is empty
    this is empty

       hello
0 голосов
/ 04 мая 2020

Попробуйте это

Dim myString = "your multiline string here"
Dim finalString As String
For each line In myString.Split(CChar(vbNewLine))
    finalstring &= line.Trim() & vbNewLine
Next
0 голосов
/ 04 мая 2020

Используйте следующий код:

Dim container As String = IO.File.ReadAllText("test.txt")

container = container.Replace(vbNewLine, vbCr).Replace(vbLf, vbCr)
Do While container.Contains(vbCr & vbCr)
    container = container.Replace(vbCr & vbCr, vbCr)
Loop

If container.StartsWith(vbCr) Then container = container.TrimStart(Chr(13))
container = container.Replace(vbCr, vbNewLine)

IO.File.WriteAllText("test.txt", container)

Он обрежет все пустые новые строки и переопределит файл (до и после):

Примечание : Если вы хотите удалить хэши и заменить их также пробелами, просто используйте следующее:

Dim container2 As String = 
    My.Computer.FileSystem.ReadAllText("test.txt").Replace("#", " ")
IO.File.WriteAllText("test.txt", container2)

Before After

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...