1

所以我最近打开了一个问题并最终通过使用正则表达式来解决它。我使用的正则表达式基本上吃掉了我所有的非英语字符。

让我重试一下:

我想吃掉字符串中可能存在的所有非键盘字符

我正在使用的正则表达式是:

[^\\p{L}\\p{N}]

然而,这变成了像

2012 年 10 月 10 日上午 10:51:25

进入

10102012105125AM

是否有某种方法可以轻松地从带有 replaceALL 的字符串中排除所有 alt 代码字符并保留键盘字符(如 % / \ : 和其他字符)?

谢谢!

4

3 回答 3

2

您可能只想保存 ASCII 字符。字符范围[ -~]将实现这一点。如果您还想要空白字符,可以将它们添加到:[ -~\s].

System.out.println(input.replaceAll("[^ -~\\s]+", ""));
于 2012-10-11T19:04:29.763 回答
1

要删除所有非 ASCII 字符:

String mystring = <your_input_string>;
mystring.replaceAll("[^ -~\\s]+", "");
于 2012-10-11T19:07:34.157 回答
0

怎么样\p{Print}?它匹配所有可打印的字符,这听起来正是您所需要的。

于 2012-10-11T19:08:09.480 回答