我有像"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] + " ");
}

我已经尝试过这一方法,并且它能正常工作,请您为我推荐一种简单的方法来在一组空格后找到Sub字符串。

最佳答案

st = st.replaceAll("^(\\S*\\s){4}", "");
^表示我们仅从字符串的第一个字符中删除。
\s是任何空格。它还将删除例如表格。
\S是任何非空格字符。
*表示任意多次出现的字符。

因此,\S*是空白之前的任意数量的非空白字符。
{4}显然是因为您要删除4个空格。

您还可以使用:
st = st.replaceFirst("(\\S*\\s){4}", "");

相同,但是您不需要^

如果输入字符串的空格少于4个:
st = st.replaceAll("^(\\S*\\s){1,4}", "");

仅当字符串不以空格结尾时,才会返回字符串的最后一个单词。如果首先调用trim,就可以确定:
st = st.trim().replaceAll("^(\\S*\\s){1,4}", "");

07-25 22:32
查看更多