Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从java中的stringbuilder obj中删除前3行_Java_Stringbuilder - Fatal编程技术网

如何从java中的stringbuilder obj中删除前3行

如何从java中的stringbuilder obj中删除前3行,java,stringbuilder,Java,Stringbuilder,我有一个StringBuilder对象,它的值分别是称呼、姓名、姓氏、地址和电话号码,每一个都是单独的行 因此,我完全需要从对象中删除前3行以获取地址和电话号码 我用过, sb.delete(0, sb.indexOf("\n")); 但它只是删除了第一行。 我尝试在对象上迭代3次并运行deleteAPI,但仍然只删除了第一行 你能帮我一次删除这3行代码,而不增加代码的复杂性吗 sb.delete(0, sb.indexOf("\n")); 但它只是删除了第一行 当然有。上面告诉String

我有一个StringBuilder对象,它的值分别是称呼、姓名、姓氏、地址和电话号码,每一个都是单独的行

因此,我完全需要从对象中删除前3行以获取地址和电话号码

我用过,

sb.delete(0, sb.indexOf("\n"));
但它只是删除了第一行。 我尝试在对象上迭代3次并运行deleteAPI,但仍然只删除了第一行

你能帮我一次删除这3行代码,而不增加代码的复杂性吗

sb.delete(0, sb.indexOf("\n"));
但它只是删除了第一行

当然有。上面告诉StringBuilder删除索引0到第一个换行符的所有字符。如果要删除三行,必须将上面的代码放入一个循环中,并调用三次。或者更准确地说:从0删除到indexOf+1

或者,您可以使用另一个版本的,它接受一个起始索引,并使用它来计算第三个换行符的索引

除此之外,在概念上。。。StringBuilder旨在构建字符串,而不是像那样操纵它们。我建议:首先考虑不要使用SraveBu建器。相反,可以使用列表来存储处理过程中的所有行。之后,您可以轻松地卸下前插槽

StringBuilder类的API不是设计用来进行复杂的索引或删除操作的。它旨在附加内容,然后将其转换为字符串。当你考虑不同的线结束时,它特别有趣,也许你需要索引+ 1…或者+2,取决于上下文。只将行存储在列表中而不在最后添加任何换行符会更容易,然后在完成后。。。只要使用任何适合您的换行符将该列表转换为字符串。

正如您在delete函数中看到的那样,将结束索引视为独占索引

因此,当您执行sb.delete0时,sb.indexOf\n;3次,由于未包含在已删除的部分中,\n而保留,这是您第二次和第三次从索引0删除到0


尝试使用sb.delete0,sb.indexOf\n+1

@StephenC非常感谢您的建议。indexOf+1适合我。在我的一段代码中,我使用如下命令:sb.delete0,sb.indexOf\n+1;sb.delete0,sb.indexOf\n+1;sb.delete0,sb.indexOf\n;它在卡达起作用了