我不允许使用replace()。我可以使用的是substring和indexOf以及length()。如何使用这些方法替换字符?这是我尝试过的,但它不起作用。
public static String replace(String s)
{
int b = 0;
String result = "";
int index = s.indexOf(' ');
while(index != -1)
{
result += s.substring(b,index) + '\n';
s = s.substring(index+1);
index = s.indexOf(' ');
}
return result;
}
***更正:我拿出了b = index;
因为我意识到这是一个错误。现在它解决了字符串的最后一个字符没有显示的唯一问题,因为部分`str.indexOf('');是-1,不符合循环条件。
答案 0 :(得分:0)
您需要将之前的index
存储在b
中。此外,您可以使用indexOf()
的第二个参数来控制String
中的位置。像,
public static String replace(String s) {
int b = 0;
String result = "";
int index = s.indexOf(' ');
if (index > -1) {
while (index != -1) {
result += s.substring(b, index) + '\n';
// s = s.substring(index + 1);
b = index;
index = s.indexOf(' ', index + 1);
}
result += s.substring(b + 1);
} else {
result = s;
}
return result;
}
答案 1 :(得分:0)
你可以在没有indexOf和substring的情况下完成。
实现来自java.lang.String.replace()。
public static String replace(String str, char oldChar, char newChar) {
if (oldChar != newChar) {
char[] value = str.toCharArray();
int len = value.length;
int i = -1;
char[] val = value;
while (++i < len) {
if (val[i] == oldChar) {
break;
}
}
if (i < len) {
char buf[] = new char[len];
for (int j = 0; j < i; j++) {
buf[j] = val[j];
}
while (i < len) {
char c = val[i];
buf[i] = (c == oldChar) ? newChar : c;
i++;
}
return new String(buf);
}
}
return str;
}
答案 2 :(得分:0)
你可以这样做,除非你必须使用你提到的所有方法。无论如何,可能是值得深思的。
public static String replace(String s) {
String[] split = s.split("");
String result = "";
for (int i = 0; i < split.length; i++) {
if (split[i].equals(" ")) {
split[i] = "\n";
}
result+=split[i];
}
return result;
}
答案 3 :(得分:0)
您还可以使用递归方法解决该任务:
public static void main(String[] args) {
System.out.println(replace("a b c ..."));
}
public static String replace(final String str) {
final int index = str.indexOf(' '); // find the first occurence
if (index == - 1) { // if there are no whitespaces ...
return str; // ... then return the unchanged String
}
// cut off the part before the whitespace, append \n to it and then append
// the result of another "replace" call with the part after the found whitespace
return String.format("%s%s%s",
str.substring(0, index), "\n", replace(str.substring(index + 1)));
}
代码中的注释应描述递归方法的行为。如果您对此有疑问,请发表评论。