在java中使用substring保留字符串的上一个和下一个索引,而不使用array

bzzcjhmw  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(316)

我有一个如下所示的字符串(所有子字符串都被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;
        }

我很困惑,我不知道如何继续做那个子串。通常我会使用数组来完成,但在我的赋值中不允许使用数组。
如果有人能帮我,我将不胜感激。
谢谢

vjrehmav

vjrehmav1#

我认为你把任务弄得太复杂了。通过搜索找到“to deleting”子字符串的初始索引 id+"|" 使用方法 String.indexOf 举个例子 start . 如果为正,则查找下一行分隔符( "\n" )在找到id之后,确定“to deleting”子字符串的结束索引并调用它 end . 通过将子字符串与源字符串连接起来来确定最终结果 0 to start 来自 end 到原始字符串的结尾。

public static void main(String[] args) throws IOException {
    String myString = "1|name|lastname|email|tel" + "\n" +
                      "2|name|lastname|email|tel" + "\n" + 
                      "3|name|lastname|email|tel" + "\n";
    int id = 2;
    int start = myString.indexOf(id+"|");
    if(start >= 0){
       int end = myString.indexOf("\n", start) + 1;
       String modified = myString.substring(0, start) + myString.substring(end);
       System.out.println(modified);
    }
    else{
       System.out.println("id not found");
    }
}

相关问题