【问题标题】:How to get only symbols and numbers from file on Java如何从Java文件中仅获取符号和数字
【发布时间】:2017-10-30 20:41:19
【问题描述】:

我正在寻找一种方法来轻松地只获取单词和数字,而没有像 ("'/&%$·... 这样的任何奇怪符号,所以我从代码中得到:

int i=0;

这个:int,i,0。

Java 有什么好的功能吗?

【问题讨论】:

  • 您想从文件中删除哪些内容?
  • 来自文件?一行一行的正则表达式
  • 我想从文件(或字符串)中删除所有不是特殊字符的东西,比如只得到 A-Z、a-z 和 0-9。

标签: java


【解决方案1】:

您可以逐行读取文件并在每一行上应用正则表达式。要排除某些字符(、%、$、/、\ 等),您可以制作如下正则表达式:

[<>%\$=&@]

您可以在此列表中添加更多内容。现在,

Pattern p = Pattern.compile("[<>%\$%@]");
Matcher m = p.matcher(unsafeInputString);
if (m.matches())
{
    // Invalid input: reject it, or remove/change the offending characters.
}
else
{
    // Valid input.
}

【讨论】:

    【解决方案2】:

    您不能直接这样做,您必须逐行获取并将非字母数字字符替换为空,然后再次重写您的行,以替换您可以使用的所有非字母数字字符:

    line.replaceAll("[^a-zA-Z\\d\\s]", "")
    

    正则表达式的意思是,替换所有非 (^) 字母 (a-zA-Z) 或数字 (\d) 或空格 (\s)。

    你可以使用这样的东西:

    while ((line = br.readLine()) != null) {//read the line
        putData = line.replaceAll("[^a-zA-Z\\d]", "");//replace all non alphanumerical 
        ....
        bw.write(putData);//write it again
    }
    

    【讨论】:

    • 对不起什么是bw?我可以使用 [^A-Za-z0-9] 吗?
    • 它是 BufferedWriter bw @JavierBertoméuMuñoz 这只是一个例子,你必须明白,这就是目标
    • 是的,您可以使用[^A-Za-z0-9],我认为您不需要替换空格,为此我将\s 放入正则表达式@JavierBertoméuMuñoz
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2011-12-03
    • 1970-01-01
    相关资源
    最近更新 更多