gpt4 book ai didi

java - 尝试将字符串 append 到自定义 StringBuilder 时出现重复且不正确的结果

转载 作者:太空宇宙 更新时间:2023-11-04 10:03:59 26 4
gpt4 key购买 nike

我正在尝试将字符串 append 到 StringBuilder 我已经设置了代码。

这就是我输入的内容

this ="is"\na =“测试”

这是我得到的输出

    this = "is"
this = "is"
a = "test"

我的预期输出是

    this = "is"
a = "test"

这是我正在执行这项工作的代码。我有一个实现的类以下类CharSequence、Appendable、Serialized

然后我使用下面的代码覆盖 append

@Override
public IndentingStringBuilder append(CharSequence csq) {
append(csq, 0, csq.length());
return this;
}

@Override
public IndentingStringBuilder append(CharSequence csq, int start, int end) {
while (start < end) {
if (csq.charAt(start) == '\n') {
writeLine(csq.toString(), start);
stringBuilder.append(newLine);
beginningOfLine = true;
start++;
} else {
start++;
}
}
writeLine(csq.toString(), start);
return this;
}

private void writeLine(String str, int end) {
if (beginningOfLine && end > 0) {
writeIndent();
beginningOfLine = false;
}
stringBuilder.append(str, 0, end);
}

private void writeIndent() {
for (int i = 0; i < indentLevel; i++) {
stringBuilder.append(' ');
}
}

这是定义的全局变量

private static final String newLine = System.getProperty("line.separator");
private int indentLevel = 0;
private StringBuilder stringBuilder = new StringBuilder();

我在这里做错了什么?我该如何解决这个问题以获得正确的输入结果?

最佳答案

您始终将整个输入 CharSequence 传递给 writeLine,并且 writeLine 始终从第一个字符开始 append 输入 String 的字符。

因此,第一次调用 writeLine 会追加

    this = "is"

第二次调用追加

    this = "is"
a = "test"

您可以将另一个参数传递给writeLine:

private void writeLine(String str, int from, int to) {
if (beginningOfLine && to > 0) {
writeIndent();
beginningOfLine = false;
}
stringBuilder.append(str, from, to);
}

并从append调用它,如下所示:

public IndentingStringBuilder append(CharSequence csq, int start, int end) {
int from = 0;
while (start < end) {
if (csq.charAt(start) == '\n') {
writeLine(csq.toString(), from, start);
from = start + 1;
stringBuilder.append(newLine);
beginningOfLine = true;
start++;
} else {
start++;
}
}
writeLine(csq.toString(), from, start);
return this;
}

作为替代方案,您可以将 csqsubSequence 传递给 writeLine

关于java - 尝试将字符串 append 到自定义 StringBuilder 时出现重复且不正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53154341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com