如何从字符串中删除字符?

如何解决如何从字符串中删除字符?

|
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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?