3 回答
![?](http://img1.sycdn.imooc.com/545850200001359c02200220-100-100.jpg)
TA贡献1943条经验 获得超7个赞
您可以反转字符串并使用substring
. 不幸的String
是没有那个,但StringBuilder
有它,例如
new StringBuilder("abcdef").reverse().toString().substring(0,4);
![?](http://img1.sycdn.imooc.com/5458655200013d9802200220-100-100.jpg)
TA贡献1856条经验 获得超17个赞
Java 不支持像 C# 那样的扩展方法,所以我会为此构建一个函数。通过这种方式,您可以使用参数控制所需的反向子字符串的数量。
public class StackOverflow {
public static void main(String[] args) {
String data = "abcdef";
for (int i = 0; i < data.length(); i++) {
System.out.println(reverseSubstring(data, i+1));
}
}
public static String reverseSubstring(String data, int length) {
return new StringBuilder(data).reverse().substring(0, length);
}
}
结果:
f
fe
fed
fedc
fedcb
fedcba
更新
另一种方法是为 String 创建一个包装类。通过这种方式,您可以调用类方法,就像您在示例中提出的问题一样S.substring(S.length()-1,3)。这也将允许您String在使用包装器的get()方法后仍然拥有所有方法。
字符串包装器
public class MyString {
private String theString;
public MyString(String s) {
theString = s;
}
public String get() {
return theString;
}
public String reverseSubstring(int length) {
return new StringBuilder(theString).reverse().substring(0, length);
}
}
用法
public class StackOverflow {
public static void main(String[] args) {
MyString data = new MyString("abcdef");
for (int i = 0; i < data.get().length(); i++) {
System.out.println(data.reverseSubstring(i+1));
}
}
}
结果:
f
fe
fed
fedc
fedcb
fedcba
![?](http://img1.sycdn.imooc.com/533e4c9c0001975102200220-100-100.jpg)
TA贡献1784条经验 获得超9个赞
您可以反转字符串并找到子字符串
// reverse
String s = "abcdef";
StringBuilder builder = new StringBuilder(s);
String substring = builder.reverse().substring(0,3);
添加回答
举报