Java 拆分句子

Java Splitting A Sentence

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

问题是,我无法拆分它。比如这个"I love #computers so much.",我只需要获取"computers"部分。

我考虑过使用 # 来使用 split 函数,但它会将句子分成两半,所以仍然不是解决方案。有什么想法吗?

你确实想在 # 上拆分。在那之后你想要这个词。所以在“”上拆分 space :).

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];

以上应该可以,但还没有测试过。

如果有多个主题标签,以上方法将不起作用,请尝试以下方法:

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++;
        }
    }

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

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

您可以使用正则表达式从推文中获取散列标签。类似于:

    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);