此问题与Java中的字符串和数组有关。假设我有一个字符串S = abcd。我有一个数组索引[] = {2}。我的问题是要从字符串 S 的索引位置2查找值,因为数组index []保持2。我有一个目标数组,其中包含“ EF”。现在,如果S在位置2包含 a ,它将被“ EF”替换。
如何访问S的2个位置。类似吗? S[index[0]]
这是返回S [2]吗?
示例: 输入:S =“ abcd”,索引= [0,2],源= [“ a”,“ cd”],目标= [“ eee”,“ ffff”] 输出:“ eeebffff” 说明:“ a”从S中的索引0开始,因此被“ eee”代替。 “ cd”从S的索引2开始,因此被“ ffff”代替。
答案 0 :(得分:1)
已编辑
在您发表评论之后,我添加了sources
数组,并假设两个数组sources
和targets
的长度相同:
String s = "abcd";
String[] sources = {"a","cd"};
int[] indexes = {0, 2};
String[] targets = {"eee", "ffff"};
int more = 0;
for (int i = 0; i < targets.length; i++) {
int startIndex = more + indexes[i];
int endIndex = more + indexes[i] + sources[i].length();
if (startIndex < s.length() && endIndex <= s.length()) {
String sBefore = s.substring(0, indexes[i] + more);
String sAfter = s.substring(indexes[i] + sources[i].length() + more);
if (sources[i].equals(s.substring(startIndex, endIndex))) {
s = sBefore + targets[i] + sAfter;
more += targets[i].length() - sources[i].length();
}
}
}
System.out.println(s);
将打印
eeebffff
答案 1 :(得分:1)
我的问题是从字符串S的索引位置2找出值
S.charAt(2)
在其索引2处返回一个char
值,或者您可以char[] charArray=S.toCharArray()
获取一个char[]
并以{{1} }
如果S在位置2处包含a,则它将替换为“ EF”。
charArray[2]
如果您确定只能存在一个if(S.charAt(2)=='a'){
StringBuilder sb=new StringBuilder(S);
S=sb.replace(2,3,"EF").toString();
}
:
a