如何插入'*';在'之前;S';和'*';在'之后;S';在StringBufferJava中
如何在如何插入'*';在'之前;S';和'*';在'之后;S';在StringBufferJava中,java,arrays,stringbuffer,Java,Arrays,Stringbuffer,如何在S之前插入*,在S之后插入* StringBufferJava StringBuffer textInFile= new StringBuffer ("Stanford "); public void convertToPTD(PlainTextDocument ptd) { if(ptd.textInFile.charAt(i)=='S') { ptd.textInFile.......??? }
S
之前插入*
,在S
之后插入*
StringBufferJava
StringBuffer textInFile= new StringBuffer ("Stanford ");
public void convertToPTD(PlainTextDocument ptd)
{
if(ptd.textInFile.charAt(i)=='S')
{
ptd.textInFile.......???
}
System.out.println(ptd.textInFile);
return;
}
第一步是找到“S”所在的索引列表 第二步是,对于每个索引,将“S”替换为“*S*” 以下是如何:
int i = -1;
while (true) {
i = buffer.indexOf(i + 1, "S");
if (i == -1) break; // No more occurrences of "S" are found
buffer = buffer.replace(i, i + 1, "*S*");
}
如果要查看的字符串部分中没有出现所需的子字符串,indexOf()将返回-1。使用
.replace
方法。例如:
char c = '*';
String s = "S";
String str = "Stanford";
String rep = str.replace(s, c + s + c);
您可以递归地使用它来满足您的需要 下面是我在我的机器上测试的一段代码。希望它对您有用:
StringBuffer str = new StringBuffer("WhereStanford");
str = str.replace(str.indexOf("S", 0), str.indexOf("S", 0)+1, "*S*");
所以您想用
*S*
替换S
的所有实例吗?请不要使用StringBuffer,它在十多年前被StringBuilder替换。@PeterLawrey“已替换”?另一个动词可能更切中要害。@La comadreja当然不是-这将在javadoc中显示。@La comadreja没有被弃用,但javadoc说“从JDK 5版开始,这个类已经被一个为单线程StringBuilder设计的等效类所补充。通常应优先使用StringBuilder类,因为它支持所有相同的操作,但速度更快,因为它不执行同步。“这个问题是关于StringBuffer而不是字符串。在替换后,这是否会有引用错误索引的风险?不会,因为我们正在查看每个旧索引的新位置。