將一個字串進行反轉:將字串中指定部分進行反轉。比如“abcdefg”反轉為”abfedcg”
方式一:轉換為char[]
public String reverse(String str,int startIndex,int endIndex){ if(str != null){ char[] arr = str.toCharArray(); for(int x = startIndex,y = endIndex;x < y;x++,y--){ char temp = arr[x]; arr[x] = arr[y]; arr[y] = temp; } return new String(arr); } return null; } @Test//測試程式碼 public void testReverse(){ String str = "abcdefg"; String reverse = reverse2(str, 2, 5); System.out.println(reverse); }
//方式二:使用String的拼接
public String reverse1(String str,int startIndex,int endIndex){ if(str != null){ //第1部分 String reverseStr = str.substring(0,startIndex); //第2部分 for(int i = endIndex;i >= startIndex;i--){ reverseStr += str.charAt(i); } //第3部分 reverseStr += str.substring(endIndex + 1); return reverseStr; } return null; }
//方式三:使用StringBuffer/StringBuilder替換String
public String reverse2(String str,int startIndex,int endIndex){ if(str != null){ StringBuilder builder = new StringBuilder(str.length()); //第1部分 builder.append(str.substring(0,startIndex)); //第2部分 for(int i = endIndex;i >= startIndex;i--){ builder.append(str.charAt(i)); } //第3部分 builder.append(str.substring(endIndex + 1)); return builder.toString(); } return null; }
package com.atguigu.exer;
import org.junit.Test;
/**
* @author CH
* @create 2021 上午 10:07
*/
public class StringDemo {
/*
將一個字串進行反轉。將字串中指定部分進行反轉。比如“abcdefg”反轉為”abfedcg”
方式一:轉換為char[]
*/
public String reverse(String str,int startIndex,int endIndex){
if(str != null){
char[] arr = str.toCharArray();
for(int x = startIndex,y = endIndex;x < y;x++,y--){
char temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
return new String(arr);
}
return null;
}
//方式二:使用String的拼接
public String reverse1(String str,int startIndex,int endIndex){
if(str != null){
//第1部分
String reverseStr = str.substring(0,startIndex);
//第2部分
for(int i = endIndex;i >= startIndex;i--){
reverseStr += str.charAt(i);
}
//第3部分
reverseStr += str.substring(endIndex + 1);
return reverseStr;
}
return null;
}
//方式三:使用StringBuffer/StringBuilder替換String
public String reverse2(String str,int startIndex,int endIndex){
if(str != null){
StringBuilder builder = new StringBuilder(str.length());
//第1部分
builder.append(str.substring(0,startIndex));
//第2部分
for(int i = endIndex;i >= startIndex;i--){
builder.append(str.charAt(i));
}
//第3部分
builder.append(str.substring(endIndex + 1));
return builder.toString();
}
return null;
}
@Test
public void testReverse(){
String str = "abcdefg";
String reverse = reverse1(str, 2, 5);
System.out.println(reverse);
}
}
StringBuffer 類不同於String ,其物件必須使用構造器生成。有 三 個 構造 器 :
StringBuffer() :初始為 容量為16 的字串緩衝區
StringBuffer(int size) :構造 指定容量的字串緩衝區
StringBuffer(String str) :將 內容初始化為指定字串內容
StringBuffer 類的常用方法
StringBuffer append(xxx):提供了很多的append()方法,用於進行字串拼接
StringBuffer delete(int start,int end):刪除指定位置的內容
StringBuffer replace(int start, int end, String str):把[start,end)位置替換為str
StringBuffer insert(int offset, xxx):在指定位置插入xxx
StringBuffer reverse() :把當前字元序列逆轉
當append和insert時,如果原來value陣列長度不夠,可擴容。
如上這些方法支援方法鏈操作。