代码情况如下:
StringBuilder text = new StringBuilder("it's SO very RUDE to shout!");
Matcher m = Pattern.compile("\\b[\\p{Lu}\\p{Lt}]+\\b").matcher(text);
while(m.find())
{
text.replace(m.start(),m.end(),m.group().toLowerCase());
}
out(text) 我简写了.....
StringBuilder text = new StringBuilder("it's SO very RUDE to shout!");
Matcher m = Pattern.compile("\\b[\\p{Lu}\\p{Lt}]+\\b").matcher(text);
int index =0;
while(m.find(index))
{
index=m.end();
text.replace(m.start(),m.end()," <b>"+m.group().toLowerCase()" </b>");
index+=7;
}
out(text)
但是现在
StringBuilder text = new StringBuilder("it's SO very RUDE to shout!");
Matcher m = Pattern.compile("\\b[\\p{Lu}\\p{Lt}]+\\b").matcher(text);
while(m.find())
{
text.replace(m.start(),m.end()," <b>"+m.group().toLowerCase()" </b>");
}
StringBuilder text = new StringBuilder("it's SO very RUDE to shout!");
Matcher m = Pattern.compile("\\b[\\p{Lu}\\p{Lt}]+\\b").matcher(text);
while (m.find()) {
text.replace(m.start(), m.end(), "aa");
System.out.println(text);
System.out.println(text.length());
}
复制代码
结果是这样的:
it's aa very RUDE to shout!
27
it's aa very aa to shout!
25
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 25
at java.lang.AbstractStringBuilder.charAt(Unknown Source)
at java.lang.Character.codePointAt(Unknown Source)
at java.util.regex.Pattern$Bound.check(Unknown Source)
at java.util.regex.Pattern$Bound.match(Unknown Source)
at java.util.regex.Pattern$Start.match(Unknown Source)
at java.util.regex.Matcher.search(Unknown Source)
at java.util.regex.Matcher.find(Unknown Source)
at temp.REG.main(REG.java:11)