'进入'检测文本挖掘

时间:2014-06-15 10:31:15

标签: java onclick jtable

我正在进行文本挖掘。当文本在他/她的文档中使用Enter时(/ br,如果是HTML),我的程序也需要标记化。现在我的程序只能检测'空间'。怎么做? 这是我的代码:

private ArrayList tokenize(String inp) {
        ArrayList<String> out = new ArrayList<String>();
        String[] split = inp.split(" ");

        for (int i = 0; i < split.length; i++) {
            if (!split[i].isEmpty()) {
                out.add(split[i]);
            }
        }
        return out;
    }

2 个答案:

答案 0 :(得分:0)

你确定在输入处分裂还没有工作吗?因为有了这个:

String s = "Hi b\nb bye";
System.out.println(s);
System.out.println();

String [] ss = s.split(" ");

for(String s2 : ss)
{
    System.out.println(s2);
}

这是我的输出:

Hi b
b bye

Hi
b
b
bye

正如您所看到的,字符串在空格处和新行处分开(即使空格是唯一的正则表达式)。但是,如果这对您不起作用,您可以循环遍历String数组并调用String.split("\n")。然后,您只需将新的拆分字符串添加到ArrayList。

答案 1 :(得分:0)

您还可以使用简单的正则表达式来执行您想要的操作:

String input = "Line of text \nAnother line<br><br><br />html<br />line";
String [] parts = input.split("\\s+|(<br>|<br\\s*/>)+");
System.out.println(Arrays.asList(parts));

它还可以连续替换多个空格/分隔线。正则表达式可以很好地完成这类任务。

输出:

  

[Line,of,text,Another,line,html,line]

解释\s是所有空格(空格,制表符,换行符)的缩写。 \s+表示一个或多个空格。 <br>|<br\\s*/>表示<br><br/><br /><br />。他们在一个群组中:(<br>|<br\\s*/>),因此我们可以使用+来识别其中的一个或多个。

整个内容:一个或多个空白字符或<br>的一个或多个不同版本。

所以你的tokenize方法看起来像这样(如果使用java 1.5或更高版本,则使用泛型):

private List<String> tokenize(String inp) {
    List<String> out = new ArrayList<String>();
    String[] split = inp.split("\\s+|(<br>|<br\\s*/>)+");

    for (String s : split) {
        if (!s.isEmpty()) {
            out.add(s);
        }
    }
    return out;
}