简体   繁体   中英

Remove non printable utf8 characters except controlchars from String

I've got a String containing text, control characters, digits, umlauts (german) and other utf8 characters.

I want to strip all utf8 characters which are not "part of the language". Special characters like (non complete list) ":/\\ßä,;\\n \\t" should all be preserved.

Sadly stackoverflow removes all those characters so I have to append a picture ( link ).

Any ideas? Help is very appreciated!

PS: If anybody does know a pasting service which does not kill those special characters I would happily upload the strings.. I just wasn't able to find one..

[Edit]: I THINK the regex "\\P{Cc}" are all characters I want to PRESERVE. Could this regex be inverted so all characters not matching this regex be returned?

You have already found Unicode character properties.

You can invert the character property, by changing the case of the leading "p"

eg

\\p{L} matches all letters

\\P{L} matches all characters that does not have the property letter.

So if you think \\P{Cc} is what you need, then \\p{Cc} would match the opposite.

More details on regular-expressions.info

I am quite sure \\p{Cc} is close to what you want, but be careful, it does include, eg the tab (0x09), the Linefeed (0x0A) and the Carriage return (0x0D).

But you can create you own character class, like this:

[^\P{Cc}\t\r\n]

This class [^...] is a negated character class, so this would match everything that is not "Not control character" (double negation, so it matches control chars), and not tab, CR and LF.

您可以使用,

your_string.replaceAll("\\p{C}", "");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM