我有一个字符串,我需要用另一个单词替换一个单词。这是我的clientId
字符串/qw/ty/s11/dc3/124
,我有另一个字符id
作为p13
。我想将s11
字符串中的clientId
替换为p13
。
clientId
的格式总是完全相同。这意味着总共有三个slah /
,之后我需要用另一个单词替换该单词,所以在三个斜杠之后的任何单词,我需要用id
的值替换它。
String clientId = "/qw/ty/s11/dc3/124";
String id = "p13";
String newId = ""; // this should come as /qw/ty/p13/dc3/124
这样做的简单方法是什么?
答案 0 :(得分:2)
你绝对可以在正则表达式的帮助下改变字符串的任何部分。
尝试:
String content = "/qw/ty/xx/dc3/124";
String replacement = "replacement";
Pattern regex = Pattern.compile("((?:/[^/]+){2}/)([^/]*)(\\S*)", Pattern.MULTILINE);
Matcher matcher = regex.matcher(content);
if(matcher.find()){
String result = matcher.replaceFirst("$1" + replacement + "$3");
System.out.println(result);
}
根据输入字符串和替换值,它将发出:
/qw/ty/replacement/dc3/124
答案 1 :(得分:1)
您可以使用indexOf
方法搜索第二个斜杠。你必须这样做3次。返回的3个位置将是您想要的位置。既然你说这个职位永远不会改变,那将是一个如何做到这一点的情景。另一种方法是使用split
方法拆分字符串。然后你必须迭代它并仅替换第三个单词。对于每次迭代,您还必须使用StringBuilder
连接String
以获取路径。这两种方法不使用REGEX值。第三种选择就像有人建议的那样,使用REGEX。
答案 2 :(得分:0)
我解决这个问题的方法是循环遍历第一个字符串,直到找到3个斜杠,然后设置一个名为&#34的变量;开始"到第三个斜线的索引。接下来,我从开始循环直到找到另一个斜杠,并设置一个名为" end"的变量。到索引。之后,我使用字符串替换方法将start + 1中的子字符串替换为新id。这是代码:
String clientId = "/qw/ty/s11/dc3/124";
String id = "p13";
String newId = "";
String temporaryID = clientId;
int slashCounter = 0;
int start = -1; //Will throw index exception if clientId format is wrong
int end = -1; //Will throw index exception if clientId format is wrong
for(int i = 0; i < temporaryID.length(); i++){
if(temporaryID.charAt(i)=='/') slashCounter++;
if(slashCounter==3){
start = i;
break;
}
}
for(int i = start + 1; i < temporaryID.length(); i++){
if(temporaryID.charAt(i)=='/') end = i;
if(end!=-1) break;
}
newId = temporaryID.replace(temporaryID.substring(start+1, end), id);
System.out.println(newId);
答案 3 :(得分:0)
如果您需要替换第3和第4斜杠之间的单词
,请尝试此操作 int counter = 0;
int start=0;
int end = clientId.length()-1;
for (int i = 0; i < clientId.length(); i++) {
if (clientId.charAt(i) == '/') {
counter++;
if (counter == 3) {
start = i+1; // find the index of the char after the 3rd slash
} else if (counter == 4) {
end = i; // find the index of the 4th slash
break;
}
}
}
String newId = clientId.substring(0, start) + id + clientId.substring(end);
或者如果您想在第3个斜杠之后替换所有内容:
String newId = clientId.substring(0, start) + id;
答案 4 :(得分:0)