【问题标题】:Get substring with only available chars from index从索引中获取仅包含可用字符的子字符串
【发布时间】:2015-06-18 02:26:19
【问题描述】:

Java 中是否有任何字符串函数可以让我提取子字符串,例如 QString::mid:

http://doc.qt.io/qt-5/qstring.html#mid

当索引超过字符串长度时,我希望函数返回空字符串,当索引+子字符串长度更大时,我希望函数只返回可用字符。

我已经编写了一段代码,但我拒绝相信 Java 中还没有这样的功能:

private static String  Mid(String s, int index, int length){
    if(s.length()>=length+index){
        return s.substring(index, length+index);
    }
    else if(s.length()>=index) {
        return s.substring(index, s.length());
    }
    else{
        return "";
    }
}

Java 中有这样的东西吗?

【问题讨论】:

    标签: java string substring


    【解决方案1】:

    简而言之,Java 本身的 String 类没有 mid 函数。

    但是,Apache Commons StringUtils 库具有mid 方法和其他字符串操作函数。熟悉所有 Apache 公共库很有用,因为它们被广泛使用、开源并且不必重新发明轮子。

    【讨论】:

      【解决方案2】:

      听起来你只需要Math.min 几次:

      int start = Math.min(index, s.length());
      int end = Math.min(index + length, s.length());
      return s.substring(start, end);
      

      【讨论】:

      • 虽然我喜欢这种方法,但它会允许 start 和 end 最终超出字符串负边界。但是由于 OP 也没有处理这种情况,它仍然比原始方法更好。 index = Math.max(index, 0); length = Math.max(length, 0); 可以解决这个问题,但也许你会想出一些更干净的东西。
      猜你喜欢
      • 2020-09-23
      • 2019-07-22
      • 2020-08-26
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      相关资源
      最近更新 更多