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

时间:2013-02-04 12:29:28

标签: 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] + " ");
}

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

7 个答案:

答案 0 :(得分:10)

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}", "");

答案 1 :(得分:5)

如何使用split?

st.split (" ", 5) [4]

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

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

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

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

答案 2 :(得分:1)

public static void main(String[] args) {
    String st = "   align is going to school sad may me   ";
    String trim = st.trim(); // if given string have space before and after string.
    String[] splitted = trim.split("\\s+");// split the string into words.
    String substring = "";
    if (splitted.length >= 4) { // checks the condition
        for (int i = 4; i < splitted.length; i++)
            substring = substring + splitted[i] + " ";
    }
    System.out.println(substring);

}

答案 3 :(得分:0)

public class MySplit {
    public static void main(String agsp[]) {
        String oldString = "roma h totti milan kaka juve love";
        String[] allStrings = oldString.split("\\s");
        String newString = "";
        for (int i = 3; i < allStrings.length; i++)
            newString = newString + " " + allStrings[i];
        System.out.println(newString);
    }
}

你也可以做这样的功能

public String newSplit(String data, int index){
            String[] allStrings = data.split("\\s");
            String newString = "";
            for (int i = index; i < allStrings.length; i++)
                newString = newString + " " + allStrings[i];
            return newString
}

答案 4 :(得分:0)

这可能是一种矫枉过正,但它使用简单的字符串操作(just str.indexOf(' '))。 如果你需要一个学校项目或某些东西:

String str ="ada adasd dasdsa d adasdad dasasd";

int targetMatch = 4;
int offset = 0;
for(int i = 0 ; i < targetMatch; i++){
     int position = str.indexOf(' ', offset);
     if(position != -1){
          System.out.println("position: "+ position);
          offset = position+1;
        }
     }

String result = str.substring(offset);
System.out.println(result);

对于真正的项目......高级正则表达式会更好。

答案 5 :(得分:0)

这是一个简单而简单的实现,可以解决您的问题:

String s = "I've tried this one and it's working can you please suggest";

int index = -1;
for (int i = 0; i < 4; i++) {
    index = s.indexOf(' ', index + 1);
}
System.out.println(s.substring(index + 1));

如果字符串以空格开头或者包含空格序列,则会失败。但这是一个开始。

输出:and it's working can you please suggest

答案 6 :(得分:0)

使用这段代码的简单方法

String thisString="Hello world go to kashmir";

String[] parts = theString.split(" ");
String first = parts[0];//"hello"
String second = parts[1];//"World"
String first = parts[3];//"hello"
String second = parts[4];//"World"