如何在给定字符串中的四个空格后获取子字符串?

Ram*_*Ram 5 java

我有类似的字符串"align is going to school sad may me".我想在四个空格后得到子字符串.字符串将在运行时输入.任何人都可以建议我在一些空格后找到Sub String ......

String st = "align is going to school sad may me";

int i = 0;
String [] strings = new String [15];
StringTokenizer stringTokenizer = new StringTokenizer (st, " ");

while (stringTokenizer.hasMoreElements ())
{
    strings [i]= (String)stringTokenizer.nextElement ();
    i++;
}
System.out.println ("I value is" + i);

for (int j=4; j<i; j++)
{
    System.out.print (strings[j] + " ");
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了这个,它的工作可以请你建议我在一些空格后找到Sub字符串的简单方法.

Adr*_*ián 10

st = st.replaceAll("^(\\S*\\s){4}", "");
Run Code Online (Sandbox Code Playgroud)

^ 表示我们只从字符串的第一个字符中删除.

\s是任何白色空间.例如,它也会删除表格.

\S 是任何非空白字符.

* 表示任意数量的角色出现.

因此,\S*在空格之前是否有任意数量的非空格字符.

{4} 显然是因为你想删除4个空格.

你也可以使用:

st = st.replaceFirst("(\\S*\\s){4}", "");
Run Code Online (Sandbox Code Playgroud)

这是相同的,但你不需要 ^.

如果输入字符串可能少于4个空格:

st = st.replaceAll("^(\\S*\\s){1,4}", "");
Run Code Online (Sandbox Code Playgroud)

只有当字符串不在空格上结束时,才会返回字符串的最后一个单词.如果你trim先打电话,你可以确定:

st = st.trim().replaceAll("^(\\S*\\s){1,4}", "");
Run Code Online (Sandbox Code Playgroud)


Mik*_*rov 5

怎么用split?

st.split (" ", 5) [4]
Run Code Online (Sandbox Code Playgroud)

它按空格分割字符串,分成不超过5个块.最后一个块(索引为4)将包含第四个空格后的所有内容.

如果不保证字符串包含4个空格,则需要进行额外检查:

String [] chunks = st.split (" ", 5);
String tail = chunks.length == 5 ? chunks [4] : null;
Run Code Online (Sandbox Code Playgroud)

Tail将包含第四个空格后的所有内容或null,原始字符串中的空格少于四个.