我有一个如下所示的字符串(所有子字符串都被return分隔开\n:
string mystring=“1 | name | lastname | email | tel”+“\n”+“2 | name | lastname | email | tel”+“\n”+…等在我的作业中,除了string和system之外,我不能使用数组或其他类。
我需要使用substring方法从该字符串中删除一个子字符串。
我使用扫描器从用户那里获取id,然后我必须将该id与字符串中的id(从1到999)进行比较。然后我必须保留所有子字符串,除了与用户输入具有相同id的子字符串。为此,我需要使用substring方法对上一个索引中的所有字符和下一个索引中的所有字符进行子串。
我想保留所有字符,除了那些位于等于用户输入的id的id和当前索引的结束字符“\n”之间的字符。
这意味着如果我的字符串是这样组成的:
String myString = "1|name|lastname|email|tel" + "\n" +
"2|name|lastname|email|tel" + "\n" +
"3|name|lastname|email|tel" + "\n";
如果用户输入2作为id,我需要将上一个索引“1 | name | lastname | email | tel”+“\n”和下一个“3 | name | lastname | email | tel”+“\n”子串起来;并将新字符串赋给一个变量。
我有一个从字符串中检索id的方法,它是:
public static String getIdContact (String contact) {
int i = 0;
String id = "";
while(contact.charAt(i) != '|') {
Id+= contact.charAt(i);
i++;
}
return id;
}
我做了另一个方法来达到下一个索引:
public static int nextIndex(int index, String carnet) {
return carnet.indexOf("\n", index)+1;
}
以及另一种从字符串中提取子字符串的方法:
public static String extractSubstring(String myString, char start, char end) {
int indexStart;
int indexEnd;
String subString = null;
if (myString != null) {
indexStart = myString.indexOf(start);
if (indexStart != -1) {
indexEnd = myString.indexOf(end, indexStart + 1);
if (indexEnd != -1) {
subString = myString.substring(indexStart + 1, indexEnd);
}
}
}
return subString;
}
最后,我有一个main方法,从字符串中删除子字符串,在这里我调用了这个方法来比较user中给定的id和字符串中的id。
public static String deleteContactFromMyString (String idContact, String myString) {
String myNewString = "";
String id = getIdContact(myString);
*Here I have to compare the id given in parameter (id entered by user) to the id
returned from the getIdContact method (id in string)*
*If both ids are equals, I need to substring all characters before that id and all characters after the "\n" and return the new string in the variable called myNewString*
return myNewString;
}
我很困惑,我不知道如何继续做那个子串。通常我会使用数组来完成,但在我的赋值中不允许使用数组。
如果有人能帮我,我将不胜感激。
谢谢
1条答案
按热度按时间vjrehmav1#
我认为你把任务弄得太复杂了。通过搜索找到“to deleting”子字符串的初始索引
id+"|"
使用方法String.indexOf
举个例子start
. 如果为正,则查找下一行分隔符("\n"
)在找到id之后,确定“to deleting”子字符串的结束索引并调用它end
. 通过将子字符串与源字符串连接起来来确定最终结果0 to start
来自end
到原始字符串的结尾。