【问题标题】:Concatenate a string before the last occurrence of any character在最后一次出现任何字符之前连接一个字符串
【发布时间】:2011-11-09 19:46:53
【问题描述】:

我想在最后一次出现任何字符之前连接一个字符串。

我想做这样的事情:

addToString(lastIndexOf(separator), string);

其中 "ddToString" 是一个在 "lastIndexOf(separator)"

之前添加 "string" 的函数

有什么想法吗?

我想到的一种方法是制作string = string + separator。 但是,我不知道如何重载连接函数以在特定索引之后连接。

【问题讨论】:

    标签: java string-concatenation


    【解决方案1】:

    你应该在http://download.oracle.com/javase/7/docs/api/查看Java的api并在找到指定字符的索引后使用String Classes substring(int beginIndex)方法

    public String addToString(String source, char separator, String toBeInserted) {
            int index = source.lastIndexOf(separator); 
            if(index >= 0&& index<source.length())
        return source.substring(0, index) + toBeInserted + source.substring(index);
            else{throw indexOutOfBoundsException;}
    }
    

    【讨论】:

      【解决方案2】:

      试试这个:

      static String addToString(String source, int where, String toInsert) {
          return source.substring(0, where) + toInsert + source.substring(where);
      }
      

      您可能需要添加一些参数检查(例如,以防找不到字符)。

      【讨论】:

        【解决方案3】:

        您需要使用StringBuffer 和方法append(String)。 Java 在内部将Strings 之间的+ 转换为临时的StringBuffer,调用append(String),然后调用toString() 并让GC 释放分配的内存。

        【讨论】:

        • 旁白:除非您担心线程安全,否则您应该使用 StringBuilder 而不是 StringBuffer。
        • insert(String) 方法可能会更容易做到这一点。关于@M.Jessup 对线程安全的评论—— StringBuffer 除了确保每次调用都以原子方式完成之外无济于事;这很少是应用程序需要的正确粒度。通常建议始终使用 StringBuilder 并在更高级别进行任何必要的同步。
        【解决方案4】:

        简单的方法是:

        String addToString(String str, int pos, String ins) {
            return str.substring(0, pos) + ins + str.substring(pos);
        }
        

        【讨论】:

          猜你喜欢
          • 2015-05-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-11
          • 1970-01-01
          • 1970-01-01
          • 2012-06-05
          相关资源
          最近更新 更多