【问题标题】:Filtering a string of unwanted chars in Java在 Java 中过滤一串不需要的字符
【发布时间】:2011-05-17 20:31:43
【问题描述】:

我正在遍历数百个数据条目,其中大部分根据我的规则有效,但在使用条目之前必须过滤一些特殊字符或不需要的空格。

我只希望=, 字符可以与数字和字母一起使用。没有其他特殊字符。可以有单个空格,但只能在 , 之后分隔数据。

我在循环中调用过滤器方法:

private String filterText(String textToBeFiltered) {
    String filteredText = null;

    // Remove all chars apart from = and , with whitespace only allowed
    // after the ,

    return filteredText;
}

我对正则表达式完全陌生,但一直在寻找教程,希望有任何想法。

谢谢!

弗兰克

【问题讨论】:

    标签: java regex string validation filter


    【解决方案1】:

    您可以将replaceAll 方法用作:

    input = input.replaceAll("[^=,\\da-zA-Z\\s]|(?<!,)\\s","");
    

    Ideone Link

    使用的正则表达式是:[^=,\\da-zA-Z\\s]|(?&lt;!,)\\s,这意味着:

    • 替换=以外的任何字符, , 或任何数字或任何字母或 任何带有"" 的非空格,有效 删除它。
    • 同时删除所有空格,但仅 如果前面没有,

    【讨论】:

    • @codadict:这不适用于真实数据。它在 U+A0 上失败,这是在 大量 文本数据中——当然它超过了我处理的 95%。您的模式在 0x85 以及其他几个常见的空白代码点上也失败了。再加上假装这些都是字母的全部,这是一种天真的外表,没有人再相信了。 Tschüβ!
    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 2013-04-13
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 2018-09-18
    • 1970-01-01
    相关资源
    最近更新 更多