【发布时间】:2015-01-09 18:13:45
【问题描述】:
在java中,
String month= "November 2014";
为了制作一个从右侧给出索引的子字符串,我不能使用
someString.substring(-4);
因为不支持负值。
有什么简单的实现我可以用来实现这一点。
【问题讨论】:
在java中,
String month= "November 2014";
为了制作一个从右侧给出索引的子字符串,我不能使用
someString.substring(-4);
因为不支持负值。
有什么简单的实现我可以用来实现这一点。
【问题讨论】:
不,不允许使用负数(它会抛出 StringIndexOutOfBoundsException)。你可以使用这个:
if(month.length() >= 4) {
year = month.substring(month.length() - 4);
}
【讨论】:
我喜欢 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));
}
(我知道这个问题已经有两年多了,但我认为其他新用户可能会对这个问题的一般答案感兴趣)。
【讨论】: