удалить CRLF в последней строке - PullRequest
0 голосов
/ 21 апреля 2011

Как удалить последний код crlf ниже?

  Dim fh As StreamReader
  Dim temp as string
  Dim temp1 as string
  fh = new StreamReader("haggis.txt")
  Dim s As String = fh.ReadLine()
  While not s Is Nothing

    temp = temp & s & Vbcrlf

  Console.WriteLine(temp)

  End While
  fh.Close()

haggis.txt

AAAA   
BBBB


'Return 
AAAA
BBBB
crlf  <---- I want to remove this.

Ответы [ 3 ]

1 голос
/ 21 апреля 2011

Попробуйте вместо этого: используйте File.ReadAllLines(), чтобы вам вообще не приходилось использовать vbCrLf. Он загружает все строки в массив строк.

 Dim readText() As String = File.ReadAllLines("haggis.txt")
 Dim s As String
 For Each s In readText
     Console.WriteLine(s)
 Next
0 голосов
/ 21 апреля 2011

Вы не должны делать прямую String конкатенацию в цикле. Я понимаю, что приведенный выше код также является лишь примером, но вы никогда не обновите s внутри вашего цикла, и, таким образом, он будет бесконечным циклом, если он войдет в него.

Если вы исправите это, вы хотите использовать StringBuilder для объединения String:

Dim temp As New System.Text.StringBuilder()

While s IsNot Nothing

    temp.Append(s).Append(vbCrLf)

End While

Dim answer As String = ""

' avoid trying to get a substring if it's blank
If temp.Length <> 0 Then

    answer = temp.ToString(0, temp.Length - vbCrLf.Length)

End If

Чтобы получить его без последнего vbCrLf, просто отрубите его, как я делал выше.

0 голосов
/ 21 апреля 2011

Это может быть простым решением

    For Each 
        Do
            If (String.IsNullOrEmpty(strline)) Then
                strline = strline & objSR.ReadLine()
            Else
                strline = vbCrLf & objSR.ReadLine()
            End If
            objwriteline.strline()
        Loop
    Next
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...