我有一个字符串,我希望得到包含最多N个字符的第一个单词。
例如:
String s = "This is some text form which I want to get some first words";
让我们说我想获得最多30个字符的单词,结果应该是这样的:
This is some text form which
有什么办法吗?我不想重新发明轮子。
编辑:我知道子字符串方法,但它可以破坏单词。我不想得到像这样的东西 This is some text form whi
等
答案 0 :(得分:1)
用空格分割你的字符串' '然后foreach substring将它添加到一个新字符串,并检查新子字符串的长度是否超过限制。
答案 1 :(得分:1)
您可以使用正则表达式来实现此目的。像下面这样的东西应该做的工作:
String input = "This is some text form which I want to get some first words";
Pattern p = Pattern.compile("(\\b.{25}[^\\s]*)");
Matcher m = p.matcher(input);
if(m.find())
System.out.println(m.group(1));
这会产生:
This is some text form which
正则表达式的解释可用here。我用了25,因为前25个字符会导致一个破碎的子字符串,所以你可以用你想要的任何值替换它。
答案 2 :(得分:1)
你可以这样做,没有正则表达式
String s = "This is some text form which I want to get some first words";
// Check if last character is a whitespace
int index = s.indexOf(' ', 29-1);
System.out.println(s.substring(0,index));
输出为This is some text form which
;
强制性编辑:那里没有长度检查,所以要小心。