Hi,
How do you delete a newline character that is inside a VB string? Apparently Trim removes only spaces.

Thanks in Advance.

Recommended Answers

All 13 Replies

OKay. I managed to, or at least I think I did, to do it with this.

SearchString = Replace(SearchString, Chr(13), "")

If anyone has a better solution, or it doesnt do what I want, please correct me. Thanks.

That is the best way to do it. A couple things I would note on this. One of them, is the use of an empty string in the replace function. I know on small applications, that it doesn't make a serious difference, but an empty string uses memory space (well, more than a null value). A Character holds (I believe it's) 8 bytes. A Null Value holds like 1, or 2. So, in really big VB applications, changing "" to vbnullstring can speed up the app (benchmarks show by 40%) by using vbnullstring instead of "". So, you could redo the function as SearchString = Replace(SearchString, Chr(13), vbnullstring) to perform the same action, and save RAM usage. Again, I know this isn't extremely important, especially with modern machines, but it's good to know, and a nice practice to have.

The other thing, and I'm not sure if this is the intended result or not, but the above code will remove ALL chr(13's) from the string, not just the trailing one (when reading files, it's usually not a problem, since input will separate lines by newlines as it's read in, but a lot of apps that I have built require reading a file (or from a socket) 1 character at a time). An alternative method, if you are just wanting to remove the trailing newline, would be to use the left function SearchString = left(SearchString, Len(SearchString) -1) .

I'm sure that the replace function is a fine solution for what you are doing, but I wanted to make sure to note the couple of exceptions.

commented: Useful points there. +3

Wow. That was some interesting points you made there. Used the vbNullString, as you adviced. And about the second point, yes I want to remove the trailing newspace. But the thing is this is for a Office Macro. I want to remove the newline from the double clicked text the user selected. Depending on the situation, the double clicked text may or may not have a newline. So I can't always be sure that the last character is a newline. So I will have to stick with the Replace function. Keep any additional advice coming. Much appreciated.

if right(SearchString, 1) = chr(13) or right(SearchString, 1) = chr(10) then
     SearchString = right(SearchString, len(SearchString) -1)
end if

Would Also Do The Trick... There's more than one way to strip a newline (ok, that one's bad).

commented: Done. +3

hmmm. Looks like there is a problem with your last snippet. When I select it with a newline, I get a completely different character. Mind you that I am working in Japanese, so maybe the fact that unicode characters have 2 bytes comes into play here. So running the above code with the selected text as 障害NL leaves me with a character like (but not exact) this . I don't even know what character it is. First time i saw something like that. The replace function works fine. :eek:

Edit.

Checked again. It is the second character in the search string. It was difficult to recognise in the debugger. One of the lines was missing because of the apparent low resolution in the debugger so I thought it was a new character.. Japanese can be subtle sometimes.

It's a problem with my code (BAH):

if right(SearchString, 1) = chr(13) or right(SearchString, 1) = chr(10) then
     ' /* Should be Left, Not Right */
     SearchString = left(SearchString, len(SearchString) -1)
end if

Oh. I should have looked more closely myself.

Hi,
How do you delete a newline character that is inside a VB string? Apparently Trim removes only spaces.

Thanks in Advance.

Hi,
You can try this and smile.:lol:

Replace(String, vbNewLine, "", , , vbTextCompare)

Thanks
---Ashok Paswan

Hi,
You can try this and smile.:lol:

Replace(String, vbNewLine, "", , , vbTextCompare)

Thanks
---Ashok Paswan

Works perfect, thanks alot! :cheesy:

Hi,
How do you delete a newline character that is inside a VB string? Apparently Trim removes only spaces.

Thanks in Advance.

use this
replace(vbstring,vbnewline,"")

It's a problem with my code (BAH):

if right(SearchString, 1) = chr(13) or right(SearchString, 1) = chr(10) then
     ' /* Should be Left, Not Right */
     SearchString = left(SearchString, len(SearchString) -1)
end if

I assume you will run this if statement twice because you could have both characters at end of line ?

Denis

One possible problem with these methods is they assume there's only ONE leading or trailing linefeed.

This method trims multiple consecutive trailing and leading newlines (as well as any other non-alpha characters). The pattern finds the first and last alpha character in the input string.

If you want to get more specific, change the pattern to one which finds a "non-newline character". Check the RegExp documentation.

Function AlphaTrim(ByVal sString As String) As String
' trim leading and trailing non-alpha's
    Dim iStart As Integer, iEnd As Integer, regEx
    Set regEx = CreateObject("vbscript.regexp")
    regEx.MultiLine = True

    regEx.Pattern = "[a-z]"
    iStart = regEx.Execute(sString)(0).FirstIndex

    regEx.Pattern = "[a-z]$"
    iEnd = regEx.Execute(sString)(0).FirstIndex

    Set regEx = Nothing
    AlphaTrim = Mid(sString, iStart, iEnd)
End Function

if you prefer to use early-binding, set a vb reference to VB Script Regular Expressions 5.5, and dim regEx As New RegExp

Also, be aware that in some text a newline character will be a concatenation of chr(13) & chr(10), and not just one or other.

type both:

FinalStr = Replace(NeededStr, Chr(13), " ", , , vbTextCompare)
FinalStr = Replace(FinalStr, Chr(10), " ", , , vbTextCompare)

Coz each line ends with CHR(13) followed by CHR(10). Or vbCR followed by vbLF.
In other systems --notably Linux and UNIX-- each line of a text file ends with ONLY CHR(10).

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.