【发布时间】:2020-08-11 18:38:41
【问题描述】:
方法replacement 替换[Name] 或{Name} 括号中的所有名称(来自给定的字符串a),如果[] 这些括号替换为电话号码,或者如果{} 这些括号替换为电子邮件.通讯录用数组tel表示,其元素可以是“Tel NametelephoneNumber”或“Mail Name mail”。例如,如果输入是:“您可以通过电话号码 [Jake] 或电子邮件 {Jake} 联系 jake”,则输出应为“您可以通过电话号码 +12345 或电子邮件 jake@gmail.com 联系 jake”,并且 tel 元素是“Tel Jake +12345”和“Mail Jake jake@gmail.com”。如果地址簿中不存在给定的名称,则对字符串不执行任何操作。我遇到的问题是在替换子字符串时我使用方法replaceFirst,它将替换我要替换的子字符串的第一次出现。
也许更简短的问题是如何替换字符串的特定部分?
public static String replacement(String a, String[] tel) {
for (int i = 0; i<a.length()-1; i++) {
char c = a.charAt(i);
if (c=='[') {
int ind = a.indexOf(']', i);
String name = a.substring(i+1, ind);
for (int j=0; j<tel.length; j++) {
int ind1 = tel[j].indexOf(' ', 4);
String name1 = tel[j].substring(4, ind1);
String p = tel[j].substring(0,3);
String help = "Tel";
int temp = p.compareTo(help);
if (ime.equals(ime1)==true && temp==0) {
String telephone = tel[j].substring(ind1+1, tel[j].length());
a = a.replaceFirst(name, telephone);
}
}
}
if (c=='{') {
int ind = a.indexOf('}', i);
String name = a.substring(i+1, ind);
for (int j=0; j<tel.length; j++) {
int ind1 = tel[j].indexOf(' ', 5);
String name1 = tel[j].substring(5, ind1);
String p = tel[j].substring(0,4);
if (name.equals(name1) && p.compareTo("Mail")==0) {
String mail = tel[j].substring(ind1+1, tel[j].length());
a = a.replaceFirst(name, mail);
}
}
}
}
return a;
}
主要:
String a = "In NY you can contact peter via telephone number [Peter] or e-mail {Peter}. In London you can contact anna via telephone number [Anna] or e-mail {Anna}."
+ "In Chicago you can contact shawn via telephone number [Shawn] or e-mail {Shawn}";
String [] tel = {"Mail Peter peter@gmail.com", "Tel Anna +3456","Tel Shawn +1234", "Mail Shawn shawn@yahoo.com"};
String t = replacement(a,tel);
System.out.println(t);
控制台:
In NY you can contact peter via telephone number [peter@gmail.com] or e-mail {peter@gmail.com}.
In London you can contact anna via telephone number [+3456] or e-mail {Anna}.In Chicago you can
contact shawn via telephone number [+1234] or e-mail {shawn@yahoo.com}
【问题讨论】: