【发布时间】:2015-04-28 02:08:59
【问题描述】:
我想在 Java 中将两个字符串叠加在一起以生成一个字符串。我已经有一种方法来做这样的事情,但不完全是我想要的。
例如,如果我告诉它用" Hi" 覆盖"Hello World",我会得到" Hiorld"。
我希望能够用" Hi" 覆盖"Hello World",并得到"HelloHiorld"!
这是我目前使用的方法:
public static String overlayString(String str, String overlay, int start, int end) {
if (str == null) {
return null;
}
if (overlay == null) {
overlay = "";
}
int len = str.length();
if (start < 0) {
start = 0;
}
if (start > len) {
start = len;
}
if (end < 0) {
end = 0;
}
if (end > len) {
end = len;
}
if (start > end) {
int temp = start;
start = end;
end = temp;
}
return new StringBuffer(len + start - end + overlay.length() + 1)
.append(str.substring(0, start))
.append(overlay)
.append(str.substring(end))
.toString();
}
如果我希望该方法避免用空格替换字符,但仍保持文本的定位,该方法的外观如何?
【问题讨论】:
-
您可能需要切换到逐个字符地遍历两个字符串的逻辑,如果它们是空格,则跳过覆盖字符串中的字符。
-
即使我真的不想用这种逻辑编写方法,但我可能不得不这样做。