【问题标题】:How to work with specific positions of string in Java?如何处理 Java 中字符串的特定位置?
【发布时间】:2011-06-24 15:58:26
【问题描述】:

我需要删除 Java 中字符串特定位置的一些字符。

在 Java 中是否有与 C++ 中的 std::string.erase() 等价的东西?如果没有,有人可以向我展示一个如何循环字符串的每个字符的快速示例,以便我可以计算它们并获取每个字符的位置。

【问题讨论】:

    标签: java string position substring


    【解决方案1】:

    您将无法更改String 对象本身,因为Strings 在Java 中是不可变的,但是,您可以通过从旧String 中删除字符来生成新的String 对象。

    或者,如果您使用 StringBuilder / StringBuffer 之类的东西,那么这些类提供 a delete(start,end) function 就成为可能

    哦,既然您询问了在 String 中处理字符的问题,那么 length() 方法可以为您提供 String 的长度以及 charAt(position)

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      由于String 本身是不可变的,因此没有简单的方法可以做到这一点。

      您可以使用substring 来构造新的Stringorig.substring(0, index1) + orig.substring(index2)

      但是,如果您进行重复的字符串操作,那么StringBuilder 可能会更好,无论是出于性能可用性原因:

      StringBuilder b = new StringBuilder(orig);
      b.replace(index1, index2, "");
      

      StringBuilder 几乎等同于 String 的可变等价物。早期版本使用StringBuffer,其方法完全相同,但同步,通常不需要。

      【讨论】:

        【解决方案4】:

        documentation开头。

        有很多好方法可以让您获得字符索引 (indexOf) 和子字符串 (substring)

        查看 c++ 中的擦除文档后,您似乎可以使用 2 次调用 substring 来模仿该行为。您可能想要创建一个StringUtils 类并根据所需的 API 实现您自己的擦除。请注意,Java 中的字符串是不可变的,因此您不能完全复制该行为——对字符串进行更改的每个操作都会返回一个新字符串。

        【讨论】:

          【解决方案5】:

          这里是Java中字符串操作的教程:String Manipulation

          你也可以看看这个:Java - String Class

          【讨论】:

            【解决方案6】:

            字符的计数可以使用toCharArray() 方法(http://download.oracle.com/javase/6/docs/api/java/lang/String.html#toCharArray())来实现。

            对于更高级的字符串操作(擦除等),您应该使用 StringBuilder/StringBuffer (http://download.oracle.com/javase/6/docs/api/java/lang/StringBuffer.html#deleteCharAt(整数))

            【讨论】:

              猜你喜欢
              • 2019-09-02
              • 2017-04-10
              • 2013-12-19
              • 2023-03-26
              • 1970-01-01
              • 2012-07-20
              • 2010-11-19
              • 1970-01-01
              • 2011-01-15
              相关资源
              最近更新 更多