Java字符串中指定部分反转的三种方式

目录
  • 方式一:把字符串转化为char[]
  • 方式二:使用String的拼接
  • 方式三:使用StringBuffer/StringBuilder替换String
  • 附实战例子
  • 总结

将“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字符串指定部分反转内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java 字符串反转实现代码

     Java 字符串反转 问题: 给一个字符串,比如 "I love china", 把字符反转后变成 "china love I" 思路: 先把字符串从第一个字符与最后一个字符对换,第二个字符和倒数第二个字符对换,这样,我们就把每一个单词位置互换了.但是我们要求单词里面字符的顺序是不能变的,所以,我们要把每一个单词里面的字符从头到尾对换一下.这样就可以得到我们想要的字符串了. 实现: 因为这里两次都会用到字符反转,所以我们就单独写一个swap的方法出来.我们对每个单

  • java 字符串反转的实例详解

    java 字符串反转的实例详解 1.new StringBuffer("abcde").reverse().toString(); 2.通过char数组进行转换, 代码如下 package com.test.reverse; public class TestReverse { public static void main(String[] args) { // 声明任意字符串 String str = "abcde"; //将字符串转换成char[] char[

  • java字符串反转示例分享

    思路: 将字符串变成数组,对数组反转将反转后的数组变成字符串只要将反转的部分的开始和结束的位置作为参数传递即可 复制代码 代码如下: class reverse_String{    public static void main (String[] args){        String s1 = "      java php .net    ";        String s2 = reverseString(s1);        System.out.println(s2

  • Java反转字符串的10种方法

    在这篇文章中,我们会讨论10种用Java反转字符串的方法,通过10个Java程序反转字符串.例如,把字符串"javaguides" 反转为 "sediugavaj". 1. 使用 + (String连接) 操作符 package net.javaguides.corejava.string; /** * * @author Ramesh Fadatare * */ public class ReverseWithStringConcat { public stati

  • Java实现的简单字符串反转操作示例

    本文实例讲述了Java实现的简单字符串反转操作.分享给大家供大家参考,具体如下: 最常用的方式是,反向取出每个字符,然后打印: public class StringReverse { public static void main(String[] args) { // 原始字符串 String s = "A quick brown fox jumps over the lazy dog."; System.out.println("原始的字符串:" + s);

  • Java反转字符串和相关字符编码的问题解决

    复制代码 代码如下: public String reverse(char[] value){       for (int i = (value.length - 1) >> 1; i >= 0; i--){           char temp = value[i];           value[i] = value[value.length - 1 - i];           value[value.length - 1 - i] = temp;       }     

  • java实现字符串反转

    本文实例为大家分享了java字符串反转的具体代码,供大家参考,具体内容如下 import java.util.Stack; public class StringReverse { // 使用内置类(StringBuilder或StringBuffer) public static String reverse1(String s) { // StringBuilder strBuilder = new StringBuilder(s); // String ret = strBuilder.r

  • JAVA字符串反转的三种方法

    方法一:使用StringBuilder import java.util.Scanner; public class StrReversal { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); System.out.println(new StringBuilder(str).reverse()); } } 方法二

  • Java字符串中指定部分反转的三种方式

    目录 方式一:把字符串转化为char[] 方式二:使用String的拼接 方式三:使用StringBuffer/StringBuilder替换String 附实战例子 总结 将“asdfghj”反转为“ashgfdj” 方式一:把字符串转化为char[] 调用String类中toCharArray()方法把字符串转化为字符,而后开始时索引和结束时索引利用for()循环反转指定字符,结束 public class StringDemo { public static void main(Strin

  • Java中线程Thread的三种方式和对比

    介绍 多线程主要的作用就是充分利用cpu的资源.单线程处理,在文件的加载的过程中,处理器就会一直处于空闲,但也被加入到总执行时间之内,串行执行切分总时间,等于每切分一个时间*切分后字符串的个数,执行程序,估计等几分钟能处理完就不错了.而多线程处理,文件加载与差分过程中 一.Java实现多线程的三种方式 1.继承Thread 通过Thread继承,并重写run方法来实现多线程,案例如下: public class ThreadPattern extends Thread { @Override p

  • Java项目开发中实现分页的三种方式总结

    目录 前言 使用 1.SpringDataJPA分页 2.MyBatis分页 3.Hutools工具类分页 总结 前言 Java项目开发中经常要用到分页功能,现在普遍使用SpringBoot进行快速开发,而数据层主要整合SpringDataJPA和MyBatis两种框架,这两种框架都提供了相应的分页工具,使用方式也很简单,可本人在工作中除此以外还用到第三种更方便灵活的分页方式,在这里一同分享给大家. 使用 主要分为SpringDataJPA分页.MyBatis分页.Hutools工具类分页几个部

  • Java中实现线程的三种方式及对比_动力节点Java学院整理

    Java中创建线程主要有三种方式: 一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的实例,即创建了线程对象. (3)调用线程对象的start()方法来启动该线程. package com.thread; public class FirstThreadTest extends Thread{ int i = 0; //重写run方法,run方法的方

  • Java中获取时间戳的三种方式对比实现

    Java中获取时间戳 三种方式对比 最近项目开发过程中发现了项目中获取时间戳的业务.而获取时间戳有以下三种方式,首先先声明推荐使用System类来获取时间戳,下面一起看一看三种方式. 1.System.currentTimeMillis() System类中的currentTimeMillis()方法是三种方式中效率最好的,运行时间最短.开发中如果设计到效率问题,推荐使用此种方式获取. System.currentTimeMillis() 2.new Date().getTime() 除了Sys

  • Java实现redis分布式锁的三种方式

    目录 一.引入原因 二.分布式锁实现过程中的问题 问题一:异常导致锁没有释放 问题二:获取锁与设置过期时间操作不是原子性的 问题三:锁过期之后被别的线程重新获取与释放 问题四:锁的释放不是原子性的 问题五:其他的问题? 三.具体实现 1. RedisTemplate 2. RedisLockRegistry 3. 使用redisson实现分布式锁 一.引入原因 在分布式服务中,常常有如定时任务.库存更新这样的场景. 在定时任务中,如果不使用quartz这样的分布式定时工具,只是简单的使用定时器来

  • Struts 2中实现Ajax的三种方式

    Ajax本质上和普通的HTTP请求是一样的,只不过普通的HTTP请求是给人看的,而Ajax请求是给JS代码去用的. 所以Ajax请求的页面一般比普通的HTTP请求的响应内容还要简单,可能是一个页面的一部分,也可能是xml.json等结构化的数据,还可能是一个简单的字符串. 所以,在Struts 2中使用Ajax,Action一般就不会调用一个jsp视图来显示了(如果Ajax请求内容是页面的一部分也可能调用jsp视图),而是通过一些其他的方式. 下面介绍了三种方法,用于Action实现Ajax请求

  • 浅谈Java生成唯一标识码的三种方式

    目录 前言 正文 UUID实现唯一标识码 SnowFlake实现唯一标识码 通过时间工具生成带有业务标示的唯一标识码 前言 我们经常会遇到这样的场景,需要生成一个唯一的序列号来表明某一个数据的唯一性,在单节点的应用中我们可以简单地使用一个自增的整型来实现实现,但是在分布式情况下这个方式却存在冲突的可能性,那么有什么办法我们可以生成一个唯一的序列号呢,并且如果想使得这个序列号也能展示一些业务信息呢? 正文 UUID实现唯一标识码 UUID 的目的是让分布式系统中的所有元素,都能有唯一的辨识资讯,而

  • java base64编码、解码的三种方式总结

    1.用法介绍 方式一:DatatypeConverter 说明:使用jdk自带的DatatypeConverter.java类实现,但是jdk版本必须>=1.6. import java.io.UnsupportedEncodingException; import javax.xml.bind.DatatypeConverter; 编码 /** * base64编码之方法一 * @explain DatatypeConverter.java实现 * @param str * 待编码字符串 *

  • scala中停止循环的三种方式(推荐)

    Scala 循环 有的时候,我们可能需要多次执行同一块代码.一般情况下,语句是按顺序执行的:函数中的第一个语句先执行,接着是第二个语句,依此类推. 编程语言提供了更为复杂执行路径的多种控制结构. 循环语句允许我们多次执行一个语句或语句组,下面是大多数编程语言中循环语句的流程图: 开始正文介绍: 1:使用return关键字 object BreakLoop { //1.使用return关键字 def add():Unit= { for(i <- 1 to 10){ if(i==7){ //停止循环

随机推荐