子串最多包含n个字符的单词

时间:2015-08-03 12:34:12

标签: java string substring

我有一个字符串,我希望得到包含最多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

3 个答案:

答案 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;

强制性编辑:那里没有长度检查,所以要小心。