使用 substring 删除 Java 中的部分字符串
Use substring to delete part of string in Java
在我的作业中,禁止使用集合和任何数组。我们可以使用 String Tokenizer,但不允许使用除 String 和 System 之外的任何其他 类。此解决方案必须适用于任意数量的条目。
我有一个字符串,如下所示:
1|Aaron|Peter|3063543030|john@gmail.com + "\n"
2|Buffet|Anthony|3063543030|john@gmail.com + "\n"
3|Dunty|Richard|3063543030|john@gmail.com
我有这个小方法可以到达下一个字符串索引:
public static int nextIndex(int index, String carnet) {
return carnet.indexOf("\n", index) +1;
}
我有这个方法,我使用子字符串方法删除字符串中的子字符串:
public static String deleteContactFromString (String idContact, String myString) {
String stringModified = "";
String myStringModified = "";
String id = idContact.trim();
if(!myString.isEmpty()) {
int start = myString.indexOf(id + "|");
if (start >= 0) {
//Here I call the nextIndex method to get next string index
int end = nextIndex(start, myString);
stringModified = carnet.substring(0, start) + carnet.substring(end);
myStringModified = stringModified;
System.out.println("string modified " + myStringModified);
} else {
System.out.println("This contact doesnt exist");
myStringModified = myString;
}
}
return myStringModified;
}
我遇到的问题是,当 myString 中只有一个联系人时,我无法删除该索引,因为没有下一个索引。当我尝试删除字符串的最后一个索引时发生同样的问题。
如果 myString 是这样的并且只有一个联系人:
1|Aaron|Peter|3063543030|john@gmail.com + "\n"
我无法删除该索引。
如果 myString 有更多联系人,我尝试删除最后一个索引,我会遇到同样的问题:
1|Aaron|Peter|3063543030|john@gmail.com + "\n"
2|Buffet|Anthony|3063543030|john@gmail.com + "\n"
3|Dunty|Richard|3063543030|john@gmail.com <-- Can't be deleted
如果有人能帮我解决这个问题,我将不胜感激。
谢谢
您的 nextIndex
方法在最后一条记录中被破坏:从您的示例中可以清楚地看出,最后一条记录甚至可能不会以 \n
结尾。首先,您需要仔细考虑您的协议:这是什么意思:
1|Aaron|Peter|3063543030|john@gmail.com + "\n"
2|Buffet|Anthony|3063543030|john@gmail.com + "\n"
到此结束。那有效吗?应该删除最后的换行符吗?这是 2 条记录还是 3 条记录?
然后,想想这个:
1|Aaron|Peter|3063543030|john@gmail.com + "\n"
2|Buffet|Anthony|3063543030|john@gmail.com
根据您的示例,意图显然是上述内容有效并且是 2 条记录列表。
如果您在第二种情况(最后一条记录没有换行符)的最后一条记录上,您的 nextIndex 代码将被破坏:indexOf
调用根本找不到换行符,因此计算结果为-1,然后向其添加 1,使其看起来像是下一条记录回到了开头。我认为这不是故意的。您需要在此处编写更多代码,并检查边缘情况:
如果没有换行符,那么'the next location'应该是string.length()
。这然后方便地意味着 str.substring(that)
是空字符串。
在我的作业中,禁止使用集合和任何数组。我们可以使用 String Tokenizer,但不允许使用除 String 和 System 之外的任何其他 类。此解决方案必须适用于任意数量的条目。
我有一个字符串,如下所示:
1|Aaron|Peter|3063543030|john@gmail.com + "\n"
2|Buffet|Anthony|3063543030|john@gmail.com + "\n"
3|Dunty|Richard|3063543030|john@gmail.com
我有这个小方法可以到达下一个字符串索引:
public static int nextIndex(int index, String carnet) {
return carnet.indexOf("\n", index) +1;
}
我有这个方法,我使用子字符串方法删除字符串中的子字符串:
public static String deleteContactFromString (String idContact, String myString) {
String stringModified = "";
String myStringModified = "";
String id = idContact.trim();
if(!myString.isEmpty()) {
int start = myString.indexOf(id + "|");
if (start >= 0) {
//Here I call the nextIndex method to get next string index
int end = nextIndex(start, myString);
stringModified = carnet.substring(0, start) + carnet.substring(end);
myStringModified = stringModified;
System.out.println("string modified " + myStringModified);
} else {
System.out.println("This contact doesnt exist");
myStringModified = myString;
}
}
return myStringModified;
}
我遇到的问题是,当 myString 中只有一个联系人时,我无法删除该索引,因为没有下一个索引。当我尝试删除字符串的最后一个索引时发生同样的问题。
如果 myString 是这样的并且只有一个联系人:
1|Aaron|Peter|3063543030|john@gmail.com + "\n"
我无法删除该索引。
如果 myString 有更多联系人,我尝试删除最后一个索引,我会遇到同样的问题:
1|Aaron|Peter|3063543030|john@gmail.com + "\n"
2|Buffet|Anthony|3063543030|john@gmail.com + "\n"
3|Dunty|Richard|3063543030|john@gmail.com <-- Can't be deleted
如果有人能帮我解决这个问题,我将不胜感激。
谢谢
您的 nextIndex
方法在最后一条记录中被破坏:从您的示例中可以清楚地看出,最后一条记录甚至可能不会以 \n
结尾。首先,您需要仔细考虑您的协议:这是什么意思:
1|Aaron|Peter|3063543030|john@gmail.com + "\n"
2|Buffet|Anthony|3063543030|john@gmail.com + "\n"
到此结束。那有效吗?应该删除最后的换行符吗?这是 2 条记录还是 3 条记录?
然后,想想这个:
1|Aaron|Peter|3063543030|john@gmail.com + "\n"
2|Buffet|Anthony|3063543030|john@gmail.com
根据您的示例,意图显然是上述内容有效并且是 2 条记录列表。
如果您在第二种情况(最后一条记录没有换行符)的最后一条记录上,您的 nextIndex 代码将被破坏:indexOf
调用根本找不到换行符,因此计算结果为-1,然后向其添加 1,使其看起来像是下一条记录回到了开头。我认为这不是故意的。您需要在此处编写更多代码,并检查边缘情况:
如果没有换行符,那么'the next location'应该是string.length()
。这然后方便地意味着 str.substring(that)
是空字符串。