How to Remove Newline character from a VB String
Hi,
How do you delete a newline character that is inside a VB string? Apparently Trim removes only spaces.
Thanks in Advance.
WolfPack
Postaholic
2,051 posts since Jun 2005
Reputation Points: 572
Solved Threads: 115
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.
WolfPack
Postaholic
2,051 posts since Jun 2005
Reputation Points: 572
Solved Threads: 115
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.
Comatose
Taboo Programmer
2,910 posts since Dec 2004
Reputation Points: 361
Solved Threads: 215
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.
WolfPack
Postaholic
2,051 posts since Jun 2005
Reputation Points: 572
Solved Threads: 115
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).
Comatose
Taboo Programmer
2,910 posts since Dec 2004
Reputation Points: 361
Solved Threads: 215
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.
WolfPack
Postaholic
2,051 posts since Jun 2005
Reputation Points: 572
Solved Threads: 115
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
Comatose
Taboo Programmer
2,910 posts since Dec 2004
Reputation Points: 361
Solved Threads: 215
Oh. I should have looked more closely myself.
WolfPack
Postaholic
2,051 posts since Jun 2005
Reputation Points: 572
Solved Threads: 115