【问题标题】:implementation for java substring with negative values具有负值的java子字符串的实现
【发布时间】:2015-01-09 18:13:45
【问题描述】:

在java中,

String month= "November 2014";

为了制作一个从右侧给出索引的子字符串,我不能使用

someString.substring(-4);

因为不支持负值。

有什么简单的实现我可以用来实现这一点。

【问题讨论】:

    标签: java string substring


    【解决方案1】:

    不,不允许使用负数(它会抛出 StringIndexOutOfBoundsException)。你可以使用这个:

    if(month.length() >= 4) {
        year = month.substring(month.length() - 4);
    }
    

    【讨论】:

      【解决方案2】:

      我喜欢 Python 的索引,并且更喜欢能够在 Java 中使用它;)

      支持负索引的子字符串的一般实现可以这样实现:

      一种将负索引转换为正等值的方法很有用:

      private static int toPosIndex(String str, int index) {
          if (index >= 0) return index;
          else return str.length() + index;
      

      然后可以使用此方法声明支持负索引的子字符串方法:

      public static String negSubstring(String str, int index1, int index2) {
          return str.substring(toPosIndex(str, index1), toPosIndex(str, index2));
      }
      

      如果需要一个等效于只有一个索引参数的子字符串版本:

      public static String negSubstring(String str, int index) {
          return str.substring(toPosIndex(str, index));
      }
      

      (我知道这个问题已经有两年多了,但我认为其他新用户可能会对这个问题的一般答案感兴趣)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-12
        • 1970-01-01
        • 2016-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-17
        相关资源
        最近更新 更多