LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

remove non-printable characters

I have a character stream I have recieved from a device that contains non printable characters with in it. I want to remove these characters to make parsing easier.

My thoughts were to turn the string into a character array and using a for loop remove all char outside the range of a-z, A-Z, 0-9 [SPACE] [/n] then convert the character array back to a string. This seems resource hungery but I see no other alternative.

0 Kudos
Message 1 of 7
(5,632 Views)

What about symbols?

 

I don't consider it resource hungry.  I wouldn't turn it into an array of characters.  I would just work on the string.

 

But there is probably a way to create a Regex that could do what you want and do a search and replace with it.

Message 2 of 7
(5,620 Views)

I hadn't considered search and replace

 

0 Kudos
Message 3 of 7
(5,618 Views)

Actually, you original idea was good, it just needs a bit of tweaking.  Converting a string to or from a U8 array in LabVIEW is an in-place operation and will cost you essentially nothing, since the two arrays are actually the same.  Once you have the U8 array, you can use a bucket brigade algorithm to traverse your array.  You can find details of the bucket brigade algorithm here (look at the fourth example).  It is a very useful trick for using a single pass to remove arbitrary data from an array efficiently.  In your case, use the array element to switch a case structure.  This should be faster than a regex search and replace or using the search and replace VI multiple times.

Message 4 of 7
(5,586 Views)

But, you'd better make that last "\n", not "/n". For all the escaped but printable characters (space, tab, NL, etc.) you use a backslash, not a forward slash and make sure you are writing your regex string in "\ code" display or it still won't interpret them correctly.

 

Cameron

 

To err is human, but to really foul it up requires a computer.
The optimist believes we are in the best of all possible worlds - the pessimist fears this is true.
Profanity is the one language all programmers know best.
An expert is someone who has made all the possible mistakes.

To learn something about LabVIEW at no extra cost, work the online LabVIEW tutorial(s):

LabVIEW Unit 1 - Getting Started</ a>
Learn to Use LabVIEW with MyDAQ</ a>
0 Kudos
Message 5 of 7
(5,583 Views)

One possible solution (very simple):

 

jd162_1-1680535241495.png

 

0 Kudos
Message 6 of 7
(1,768 Views)

This is an old thread but this was my solution

RustyStrings_1-1715776355679.png

 

It almost seems like there should be a function to do this

 

0 Kudos
Message 7 of 7
(515 Views)