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);
我正在为 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);