为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红糖糍粑 2021-06-07 13:31:05
是否可以substring()在 JAVA 中使用右手(反向)方向获取子字符串。例子。假设String S="abcdef",我可以使用子串“fedc”S.substring(S.length()-1,3)吗?如果不正确,请建议我如何从右手端(反向)获取子字符串??
查看完整描述

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

您可以反转字符串并使用substring. 不幸的String是没有那个,但StringBuilder有它,例如

new StringBuilder("abcdef").reverse().toString().substring(0,4);


查看完整回答
反对 回复 2021-06-10
?
慕慕森

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


查看完整回答
反对 回复 2021-06-10
?
千万里不及你

TA贡献1784条经验 获得超9个赞

您可以反转字符串并找到子字符串


// reverse

String s = "abcdef";

StringBuilder builder = new StringBuilder(s);

String substring = builder.reverse().substring(0,3);


查看完整回答
反对 回复 2021-06-10
  • 3 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信