温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java字符串中指定部分反转的方式有哪些

发布时间:2022-01-04 17:13:30 来源:亿速云 阅读:629 作者:iii 栏目:开发技术

这篇文章主要讲解了“Java字符串中指定部分反转的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java字符串中指定部分反转的方式有哪些”吧!

将“asdfghj”反转为“ashgfdj”

方式一:把字符串转化为char[]

调用String类中toCharArray()方法把字符串转化为字符,而后开始时索引和结束时索引利用for()循环反转指定字符,结束

public class StringDemo {       public static void main(String[] args) {         StringDemo stringDemo = new StringDemo();         String str1 = "asdfghj";         String str2 = stringDemo.reverse1(str1,2,5);         System.out.println("反转后为:" + str2);     }       public String reverse1(String str, int start, int end) {         if (str != null) {             char[] charArray = str.toCharArray();             for (int i = start, j = end; i < j; i++, j--) {                 char temp = charArray[i];                 charArray[i] = charArray[j];                 charArray[j] = temp;             }             return new String(charArray);         }         return null;     } }

运行结果:

反转后为:ashgfdj

方式二:使用String的拼接

将字符串分割为三部分:需反转字符串前,需反转字符串,需反转字符串之后,调用substring()方法截取字符串,循环倒序遍历需反转字符串部分,后拼接这三部分

    public static void main(String[] args) {         StringDemo stringDemo = new StringDemo();         String str1 = "asdfghj";         String str2 = stringDemo.reverse1(str1,2,5);         System.out.println("反转后为:" + str2);     }       public String reverse1(String str, int start, int end) {         // 第一部分         String newStr = str.substring(0, start);         // 第二部分         for (int i = end; i >= start; i--) {             newStr += str.charAt(i);         }         // 第三部分         newStr += str.substring(end + 1);         return newStr;     }

运行结果:

反转后为:ashgfdj

方式三:使用StringBuffer/StringBuilder替换String

相较于方式二的改进,用Stringbuilder中append()方法代替方式二中“+=”,效率更高

public class StringDemo {       public static void main(String[] args) {         StringDemo stringDemo = new StringDemo();         String str1 = "asdfghj";         String str2 = stringDemo.reverse1(str1,2,5);         System.out.println("反转后为:" + str2);     }       public String reverse1(String str, int start, int end) {         StringBuffer s = new StringBuffer(str.length());         // 第一部分         s.append(str.substring(0, start));         // 第二部分         for (int i = end; i >= start; i--) {             s.append(str.charAt(i));         }         // 第三部分         s.append(str.substring(end + 1));         return s.toString();     } }

运行结果:

反转后为:ashgfdj

注:在方式三中,仅是字符串反转操作,不需要考虑线程安全问题,所以优先选择StringBuilder

附实战例子

对字符串中指定的部分进行旋转,如str="mmabcdfeffnn",指定abcdfeff部分进行旋转,则得到字符串str="mmffefdcbann"。

其实现的思路,我是这样的:将源字符串分为三部分,头,待旋转,尾,其中这三部分都需要进行采取截取的操作,而对于待旋转的部分,这里采用了一个技巧,那就是借用了StringBuffer(String string)作为中介,并调用其中的reverse()方法进行旋转。最后得到的三部分:头,已旋转,尾,进行连接concat(String string)操作即可。

代码如下:

/**  * 字符串指定的部分进行反转  * @author zhonglinsen  * 2016-3-1 下午  */ public class StringReverse {     public static void main(String[] args) {         String str="mmabcdefnn";         int start=2;         int end=7;                   System.out.println("原先字符串:          "+str);         String strNew=strReverse(str, start, end);         System.out.println("旋转了指定位置后的字符串: "+strNew);     }           public static String strReverse(String strArg,int start,int end){                   String strStart=strArg.substring(0,start);                   String strEnd=strArg.substring(end+1,strArg.length());           String strSub=strArg.substring(start, end+1);           StringBuffer sb=new StringBuffer(strSub);         strSub=sb.reverse().toString();                   return strStart.concat(strSub).concat(strEnd);     } }

感谢各位的阅读,以上就是“Java字符串中指定部分反转的方式有哪些”的内容了,经过本文的学习后,相信大家对Java字符串中指定部分反转的方式有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI