从右手方向在JAVA中使用子字符串

时间:2018-07-24 14:03:04

标签: java substring

是否可以使用JAVA中的substring()从右手(反向)方向获取子字符串。 例。      假设String S="abcdef",     我可以使用S.substring(S.length()-1,3)获得子字符串“ fedc”吗? 如果不正确,请建议我如何从右端(反向)获取Substring?

3 个答案:

答案 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