是否可以使用JAVA中的substring()
从右手(反向)方向获取子字符串。
例。
假设String S="abcdef"
,
我可以使用S.substring(S.length()-1,3)
获得子字符串“ fedc”吗?
如果不正确,请建议我如何从右端(反向)获取Substring?
答案 0 :(得分:3)
您可以反转字符串并使用substring
。不幸的是String
没有,但是StringBuilder
有它,例如
new StringBuilder("abcdef").reverse().toString().substring(0,4);
答案 1 :(得分:1)
您可以反转字符串并找到子字符串
// reverse
String s = "abcdef";
StringBuilder builder = new StringBuilder(s);
String substring = builder.reverse().substring(0,3);
答案 2 :(得分:1)
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