Java分裂句子

时间:2015-02-20 07:40:54

标签: java twitter split

我正在为Twitter编写一个程序。它将读取推文并获取其中的主题标签。

问题是,我无法拆分它。例如,在此"I love #computers so much."中,我只需要获取"computers"部分。

我考虑过使用#使用分割功能,但它会将句子分成两半,所以它不会是一个解决方案。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

你想分开#的确。之后你想要这个词。所以在“”空间上分开:)。

string="I love #computers so much.";
String[] parts = string.split("#");
String part1 = parts[0]; // I love 
String part2 = parts[1]; // computers so much.

String[] parts2 = part2.split(" ");
String output = parts2[0];

以上应该可行,但尚未测试过。

如果有多个hashtages,则上述操作不起作用,请尝试以下方法:

String string="I love #computers so #much omg #lol .";
    String[] stringParts = string.split("#");

    //'delete' first element.
    String[] parts = Arrays.copyOfRange(stringParts, 1, stringParts.length);

    int i = 0;
    String[] output = new String[10];

    for(String part : parts)
    {
        if(part.contains(" "))
        {
            String[] parts2 = part.split(" ");
            output[i] = parts2[0];
            i++;
        }
    }

唯一的问题是这个代码,你需要一个空格,否则你的单词会有不同的字符。

答案 1 :(得分:0)

你最好看看使用正则表达式来解决问题....尝试像(?< =#)\ w +这样的东西 - 它将返回#之后的所有字母数字,而不是捕获#。您可能需要更改\ w以根据需要包含其他字符。希望这会有所帮助。

答案 2 :(得分:0)

您可以使用正则表达式从推文中获取哈希标记。类似的东西:

    String sentence = "I love #computers and #something_Else so much";

    Pattern p = Pattern.compile("#\\S+");

    List<String> hashTags = new ArrayList<>();

    Matcher matcher = p.matcher(sentence);
    while (matcher.find()) {
        hashTags.add(matcher.group(0));
    }

    System.out.println(hashTags);