Spring aware接口的作用是什么
383
2022-09-05
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;mzQdusx
http:// }
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.prhttp://intln("反转后为:" + 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);
}
}
总结
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~