Java 包含最多n个字符的字的子字符串

Java 包含最多n个字符的字的子字符串,java,string,substring,Java,String,Substring,我有一个字符串,我想得到的第一个单词最多包含N个字符 例如: String s=这是一些文本形式,我想得到一些第一个单词 假设我想得到最多30个字符的单词,结果应该如下所示: 这是一种文本形式 有什么办法吗?我不想重新发明轮子 编辑:我知道子字符串方法,但它可以打断单词。我不想得到这样的东西 这是一些文本形式 等等。用空格“”拆分字符串,然后将每个子字符串添加到新字符串中,并检查新子字符串的长度是否超过限制。您可以使用正则表达式来实现这一点。下面的内容应该可以完成这项工作: String

我有一个字符串,我想得到的第一个单词最多包含N个字符

例如:

String s=这是一些文本形式,我想得到一些第一个单词

假设我想得到最多30个字符的单词,结果应该如下所示:

这是一种文本形式

有什么办法吗?我不想重新发明轮子

编辑:我知道子字符串方法,但它可以打断单词。我不想得到这样的东西

这是一些文本形式
等等。

用空格“”拆分字符串,然后将每个子字符串添加到新字符串中,并检查新子字符串的长度是否超过限制。

您可以使用正则表达式来实现这一点。下面的内容应该可以完成这项工作:

    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

关于正则表达式的解释是可用的。我使用了25个字符,因为前25个字符将导致一个断开的子字符串,因此您可以用您想要的任何值替换它。

您可以这样做,而无需正则表达式

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));
输出结果是这是一些文本形式,其中:


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

使用Stringsubstring。,。是的,有一个方法叫substring请用谷歌搜索。substring正在破坏文字,我不想得到像这样的东西,这是一些文本形式wh等。使用substring并通过空格连接。是的,我知道如何实现它,但是我认为这样的方法已经存在于某个地方,因此我可以重用它[^\\s]可以写成\\s。而且我不确定+,*在我看来感觉更好。@Pshemo:我同意*和+。我倾向于选择[^\s],因为我认为这会使它更容易阅读。没错,[^\s]可能更容易阅读,但\s更容易编写:@Pshemo:regex一点也不容易:PI没有说容易,但更容易:D