I'm looking for a javascript function which takes a string parameter and checks for ascii characters lower than 32, replacing them with empty string -> "". I'm new to javascript so I was wondering whether anyone can point me towards the right direction ?
Thanks in advance for your time.
-
Also, why? Might be a better way.Prof. Falken– Prof. Falken2012年11月15日 13:26:37 +00:00Commented Nov 15, 2012 at 13:26
-
stackoverflow.com/questions/94037/… this may helpFerhat– Ferhat2012年11月15日 13:27:50 +00:00Commented Nov 15, 2012 at 13:27
-
What I meant was, I want to find and remove any characters within the string that has a lower ascii value than 32Pumpkin– Pumpkin2012年11月15日 13:28:55 +00:00Commented Nov 15, 2012 at 13:28
3 Answers 3
Try this:
var replaced = string.replaceAll("[^ -~]", "");
Using ^ negates the characters class, and since space is character 32 in the ASCII table and ~ is the last printable character, you're basically saying "everything that isn't a printable character".
To simply remove all characters from 0-31 use:
var replace = string.replaceAll("\x00-\x1F", "");
3 Comments
à.If I understand your question correctly you are looking for a regex to use with .replace...
For replacing any printable ascii chars you can use this regex:
/[ -~]/
You will probably have to adjust the range. I recommend changing the tilder since it is the last printable char.
Sorry, I see what you mean! I think you cannot match unprintable chars unless use use their special symbol: i.e. \b \s \n etc.
Comments
function keepCharsAbove(inStr, charCode) {
var goodChars = [];
for(var x = 0; x < inStr.length; x++) {
if(inStr.charCodeAt(x) > charCode) {
goodChars.push(inStr.charAt(x));
}
}
return goodChars.join("");
}
Usage:
keepCharsAbove("foo \t bar",32); // returns 'foobar'
1 Comment
Array.filter) and then joining back into a string. (A more functional approach.)