如何解决如何从字符串中删除字符?
|public static String removeChar(String s,char c) {
StringBuffer r = new StringBuffer( s.length() );
r.setLength( s.length() );
int current = 0;
for (int i = 0; i < s.length(); i ++) {
char cur = s.charat(i);
if (cur != c) r.setCharat( current++,cur );
}
return r.toString();
}
我在这里找到了上面的代码。
两个问题:
为什么我们需要做setLength()?没有它,我得到java.lang.Stringindexoutofboundsexception:字符串索引超出范围:0
当我使用参数“ teeter”和“ e”运行该程序时,将会出现\'ttr \'和三个垃圾字符。如何删除缓冲区中未使用的空格?
解决方法
为什么不只使用replaceAll? java.lang.String.replaceAll
, 我会回答您的问题:
1-为什么我们需要做setLength()?没有它,我越来越
java.lang.StringIndexOutOfBoundsException:
字符串索引超出范围:0
最初,您的字符串缓冲区没有字符。您需要调用ѭ1才能用字符填充空字符串缓冲区。空字符\'\\ 0 \'(或您称为它们的垃圾字符)被添加到字符串缓冲区,以便达到指定的长度。如果不这样做,则会得到
StringIndexOutOfBoundsException
,因为字符串缓冲区中没有字符。请参阅有关StringBuffer#setLength的Javadocs。
因此,在方法结尾处,字符串缓冲区具有:3
2-当我使用以下命令运行该程序时,\'ttr \'和三个垃圾字符即将到来
参数-\“跷跷板\”和\“ e \”。如何
删除中未使用的空格
缓冲?
您可以通过调用r.toString().trim()
或r.substring(0,current)
删除空字符。
, 似乎您只想使用String.replaceAll(OLD,NEW);
,
每个字符串缓冲区都有一个容量。如
只要字符的长度
字符串中包含的序列
缓冲区不超过容量,
不必分配新的
内部缓冲区阵列。
API-http://download.oracle.com/javase/6/docs/api/java/lang/StringBuffer.html
其次,如果要从开头和结尾删除空格,则可以仅对字符串调用trim。
但是,其他建议您应该使用replace / replaceAll的注释是最相关的。为什么要重写一个内置方法。
http://download.oracle.com/javase/6/docs/api/java/lang/String.html#replace(char,char)
, 忽略事实,您可以使用String.replaceAll()...
您应该使用append方法:
public static String removeChar(final String s,final char c) {
final StringBuffer r = new StringBuffer(s.length());
for (int i = 0; i < s.length(); i++) {
final char cur = s.charAt(i);
if (cur != c) {
r.append(cur);
}
}
return r.toString();
}
现在,您将不会获得StringIndexOutOfBoundsException。
顺便说一句,在单线程环境中,您应该真正使用StringBuilder。
, 有一个更简单的解决方案:
public static String removeChar(String s,char c) {
return s.replaceAll(Pattern.quote(new StringBuilder().append(c).toString()),\"\");
}
, 您可以使用:
public static String removeChar(String s,char c) {
StringBuilder r = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char cur = s.charAt(i);
if (cur != c) {
r.append(cur);
}
}
return r.toString();
}
, java.lang.String
类中有很多方法。其中之一是replaceAll()方法。
例如,
public class ReplaceAllDemo
{
public static void main(String[] args)
{
String strDemo = \"Sam hates java\";
System.out.println(\"Before : \" + strDemo);
strDemo = strDemo.replaceAll(\"hates\",\"loves\");
System.out.println(\"After : \" + strDemo);
}
}
输出量
Before : Sam hates java
After : Sam loves java
有关字符串类的更多信息,请参见以下资源以获得解释和示例,
字符串replaceAll
字符串替换所有示例
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。