我有"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字符串的简单方法。
答案 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"