如果我们有
String x="Hello.World";
我希望将'.'
替换为"Hello"
,以便:"HelloHelloWorld"
。
问题是,如果我有:
String Y="Hello.beautiful.world.how.are.you;"
答案必须是"HelloHellobeautifulbeautifulworldworldhowhowareareyouyou"
请记住,我不能使用数组。
答案 0 :(得分:3)
我认为您可以使用正则表达式替换来实现这一目标。在正则表达式中,您可以使用所谓的“捕获组”。您将一个单词加上一个点与正则表达式匹配,然后将其替换为匹配单词的两倍。
// Match any number of word characters plus a dot
Pattern regex = Pattern.compile("(\\w*)\\.");
Matcher regexMatcher = regex.matcher(text);
// $1 is the matched word, so $1$1 is just two times that word.
resultText = regexMatcher.replaceAll("$1$1");
请注意,我没有尝试过,因为设置Java环境等可能需要半个小时。但我相信它有效。
答案 1 :(得分:1)
将问题想象为指针问题。您需要保持一个正在运行的list(set(x) - set(y))
指向您查找的最后一个位置(我的代码中为pointer
),并指向您当前位置的指针(我的代码中为firstIndex
)。对这些地点之间的任何内容进行nextIndex
调用(在第一次出现后添加1到subString()
,因为我们不需要捕获"。"),将其追加两次到一个新的字符串,然后更改您的指针。可能有更优雅的解决方案,但这可以完成工作:
firstIndex
输出:
String Y="Hello.beautiful.world.how.are.you";
int firstIndex=0;
int nextIndex=Y.indexOf(".",firstIndex);
String newString = "";
while(nextIndex != -1){
newString += Y.substring(firstIndex==0 ? firstIndex : firstIndex+1, nextIndex);
newString += Y.substring(firstIndex==0 ? firstIndex : firstIndex+1, nextIndex);
firstIndex=nextIndex;
nextIndex=Y.indexOf(".", nextIndex+1);
}
System.out.println(newString);
答案 2 :(得分:-2)
这就是我所拥有的:
public String meowDot(String meow){
int length = meow.length();
String beforeDot = "";
String afterDot;
char character;
for(int i=0; i < length; i++){
character = meow.charAt(i);
if (i < largo - 1 && character == '.'){
beforeDot += meow.substring(0, i) + meow.substring(0, i);
afterDot = meow.substring(i, length);
meow = afterDot;
} else if(i == length - 1 && character != '.'){
afterDot += meow + meow;
}
}
return beforeDot;
}