【问题标题】:using split to get rid of regexp from an Arraylist使用 split 从 Arraylist 中删除正则表达式
【发布时间】:2014-07-24 12:41:13
【问题描述】:

我正在尝试创建一个拼写检查器,但在我这样做之前,我必须阅读两个单独的文件。第一个(字典),我做了文件。第二个是我必须拼写检查的小说。问题是,我需要从小说中删除所有不是字母(正则表达式?)的特殊字符。我正在尝试使用 string.split,但没有运气。我正在测试这部小说的一小部分,test2。

这是我的代码段...

public static void readFileBook() {
    File f = new File("test2.txt");
    ArrayList<String> list2 = new ArrayList<String>();
    try {
        Scanner input = new Scanner(f);
        int i = 0;
        while (input.hasNext()) {
            String oliver = input.next();
            list2.add(oliver);
            String[] oliverArray = oliver.split("[.#]");
            System.out.println(list2.get(i));
            i++;
        }
    } catch (IOException e) { //opening failed
        e.printStackTrace();
    }

}`enter code here`

我从 '.' 开始。和“#”符号。 System.out 只是为了检查事情是否正常(它们不是),但输出仍然有符号。

我知道可能有一种更优雅的方式来做这件事,但是教练有一个特定的东西可以找到。

任何帮助将不胜感激。

【问题讨论】:

  • 欢迎来到 SO!提示:让你的问题明确、清晰、一句话。将其编辑到您的问题中。 (我对正则表达式了解不多,所以无法帮助您,但这会让您的问题更容易让其他人帮助您)。

标签: java regex split


【解决方案1】:

所以在你的代码中

String oliver = input.next();
list2.add(oliver);
String[] oliverArray = oliver.split("[.#]");
System.out.println(list2.get(i));

你是(逐行)

将输入读入字符串 Oliver

将奥利弗添加到列表中

将 Oliver 拆分成 OliverArray 永远不会被使用

打印列表中i位置的字符串

如何知道这是否有效?

【讨论】:

  • 我想我没有,这实际上是我害怕的事情。我想我不知道如何检查我是否做得正确。
  • 好吧,您甚至没有使用 OliverArray,那么您的正则表达式是否正确有什么关系。无论如何,考虑使用 String.replaceAll
  • 我的正则表达式是否正确很重要,因为这是我需要完成的。我担心我没有正确打印出来,但是每次打印出数组的尝试都会遇到 Outofbounds 异常。
猜你喜欢
  • 2019-02-16
  • 2019-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-23
  • 2016-04-18
相关资源
最近更新 更多