Java 需要解释使用字符串缓冲区替换字符串的代码吗
我从网站上获得了以下代码。但我不能清楚地理解它。有人能帮我理解代码吗。代码将替换字符串。它用替换字符串替换stringToReplace。它正在进行角色替换,但我无法理解它的细节Java 需要解释使用字符串缓冲区替换字符串的代码吗,java,regex,string,replace,Java,Regex,String,Replace,我从网站上获得了以下代码。但我不能清楚地理解它。有人能帮我理解代码吗。代码将替换字符串。它用替换字符串替换stringToReplace。它正在进行角色替换,但我无法理解它的细节 String strIn = "Al%arm %Receipient Number% has arrived %test% is ok."; String stringToReplace = "%Receipient Number%"; String replacementString = "12345"; Stri
String strIn = "Al%arm %Receipient Number% has arrived %test% is ok.";
String stringToReplace = "%Receipient Number%";
String replacementString = "12345";
String ReplacedString = null;
int idx = strIn.lastIndexOf( stringToReplace );
if ( idx != -1 )
{
StringBuffer results = new StringBuffer( strIn );
results.replace( idx, idx+stringToReplace.length(), replacementString );
while( (idx=strIn.lastIndexOf(stringToReplace, idx-1)) != -1 )
{
results.replace( idx, idx+stringToReplace.length(), replacementString );
}
//System.out.println(results.toString());
ReplacedString = results.toString();
}
System.out.println(ReplacedString);
输出是
Al%arm 12345 has arrived %test% is ok.
首先,您有输入字符串
strIn
,然后是要替换的stringToReplace
和替换字符串replacementString
<顺便说一下,code>ReplacedString应该是ReplacedString
不符合惯例的
查找要替换为lastIndexOf
的字符串的最后一个匹配项。这将提供最后一个索引,替换字符串从原始字符串开始
如果找到要替换的字符串(如果索引不是-1),则使用StringBuffer
方法replace
将字符串从idx
替换为idx+stringToReplace.length()
(从找到的索引开始替换整个长度的字符串)
然后检查要替换的字符串是否仍然存在于结果中,并在它存在时替换它
然后将结果字符串化(一个
StringBuffer
)并将其输出。理解代码的最佳方法是实际调试或进行一次试运行。
我的意思是,在调试器中实际查看输出值,以查看特定行在做什么
在您的情况下,这样做的方法是首先检查每一行的功能。
那么字符串中的lastIndexOf做什么呢?你认为为什么会有一个-1的检查,所以阅读文档会告诉你为什么会发生这种情况
下一步,替换并再次阅读文档,了解其参数以及您要发送的内容
在任何情况下,上面的代码都是以复杂的方式完成一些非常简单的事情
strIn = strIn.replaceAll(stringToReplace, replacementString)
现在的情况是有人重新发明了轮子。用这条线可以完成整个过程:
String ReplacedString = strIn.replace(stringToReplace, replacementString);
尝试编写自己版本的replace()
方法没有任何好处
相反,也有相当大的缺点-您询问的事实证明这很难阅读,因此容易出现错误。请检查此处使用的每种方法的文档,例如
replace
,lastIndexOf
。这会让你了解它们是如何工作的,你可以更好地理解在那之后做了什么。