我正在为Twitter编写一个程序。它将读取推文并获取其中的主题标签。
问题是,我无法拆分它。例如,在此"I love #computers so much."
中,我只需要获取"computers"
部分。
我考虑过使用#
使用分割功能,但它会将句子分成两半,所以它不会是一个解决方案。有什么想法吗?
答案 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);