1. 程式人生 > >Java中字串與陣列,陣列與list之間的轉化,及字串處理

Java中字串與陣列,陣列與list之間的轉化,及字串處理

一、Java中字串與陣列之間的轉化

(1)字串-》陣列

  • 如果字串中間有分隔符,比如“,”或者“  ”(空格)就可以利用分隔符來對字串進行分隔,轉化為陣列;

舉例:

String str = "1,2,3,4,5,6,7";
		String[] array = str.split(",");
		System.out.println("字串轉化為陣列:");
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i]+"  ");
		}

輸出為:
字串轉化為陣列:
1  2  3  4  5  6  7  

  • 如果字串中間沒有分隔符,可以直接使用toCharArray()函式轉化為Char型的陣列,並且可以使用charAt(int index)獲取字串中索引為index的字元;
  • 也可以使用String[] array = str.split("");得到同樣的結果,不過得到的是String型的陣列:

舉例:

String str = "oanvqo123";
		String[] array = str.split("");
		System.out.println("字串轉化為陣列:");
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i]+"  ");
		}
		System.out.println("\n獲取字串索引為5的字元:");
		System.out.println(str.charAt(5));

輸出為:
字串轉化為陣列:
<pre name="code" class="html">o  a  n  v  q  o  1  2  3  
獲取字串索引為5的字元:
o

(2)陣列-》字串

  • 可以使用Arrays類的toString()方法,可以直接將多種型別的陣列轉化為字串,但toString()方法是帶格式的,也就是{"a","b","c"}說輸出的是[a, b, c]:

舉例:

String[] array = {"123","abc","xyz","666"};
		String s = Arrays.toString(array);
		System.out.println("將陣列直接轉化為字串的格式:");
		System.out.println(s);
		StringBuilder build = new StringBuilder();
		for (int i = 0; i < array.length; i++) {
			build.append(array[i]);
		}
		System.out.println("將陣列經過處理後得到的字串格式:");
		System.out.println(build);

輸出為:
將陣列直接轉化為字串的格式:
[123, abc, xyz, 666]
將陣列經過處理後得到的字串格式:
123abcxyz666
  • 如果是Char型陣列的話,僅僅想輸出abc則可以用以下兩種方法:
舉例:
char[] array = {'1','2','3','a','b','c'};
		String s = Arrays.toString(array);
		System.out.println("將陣列直接轉化為字串的格式:");
		System.out.println(s);
		s = new String(array);
		System.out.println("將Char型陣列轉化字串方法一:");
		System.out.println(s);
		s = String.valueOf(array);
		System.out.println("將Char型陣列轉化字串方法二:");
		System.out.println(s);

輸出為:
將陣列直接轉化為字串的格式:
[1, 2, 3, a, b, c]
將Char型陣列轉化字串方法一:
123abc
將Char型陣列轉化字串方法二:
123abc

二、java中陣列與List之間的轉化

(1)陣列-》List

  • 可以直接使用Arrays類中的asList()方法,將陣列轉化為List,但是List不像ArrayList類一樣,不能進行新增和移除操作,因為ArrayList類繼承了List介面,並且重寫了裡面的抽象方法:

舉例:

String[] array = {"123","abc","xyz","666"};
		List<String> list = Arrays.asList(array);
		System.out.println("陣列轉化為列表:");
		for (int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i)+"  ");
		}

輸出為:
陣列轉化為列表:
123  abc  xyz  666  
  • 也可以通過向ArrayList類中新增陣列元素實現:

舉例:

String[] array = {"123","abc","xyz","666"};
		ArrayList<String> list = new ArrayList<>();
		System.out.println("陣列轉化為列表:");
		for (int i = 0; i < array.length; i++) {
			list.add(array[i]);
			System.out.print(list.get(i)+"  ");
		}
		System.out.println("\n列表長度為:"+list.size());
		list.remove(3);
		System.out.println("移除索引為3的值後,列表為:");
		for (int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i)+"  ");
		}
		System.out.println("\n列表長度為:"+list.size());
		

輸出為:

陣列轉化為列表:
123  abc  xyz  666  
列表長度為:4
移除索引為3的值後,列表為:
123  abc  xyz  
列表長度為:3

(2)List-》陣列

  • List,ArrayList中都有toArray()方法,可以將連結串列轉化為陣列,這裡需要注意的是:toArray()方法內的如果沒有引數返回的是object型別陣列,如果要為string型別,則需要加:new String[list.size()];
舉例:
ArrayList<String> list = new ArrayList<>();
		list.add("abc");
		list.add("123");
		list.add("zxy");
		String[] array = list.toArray(new String[list.size()]);
		System.out.println("列表長度為:"+list.size());
		System.out.println("將列表轉化為陣列:");
		for (int i = 0; i < array.length; i++) {
			System.out.print(array[i]+"  ");
		}


輸出為:

列表長度為:3
將列表轉化為陣列:
abc  123  zxy  

三、字串處理方法

(1)字串去空格

  •   String.trim()是去掉首尾空格 
  •   str.replace(" ", "");   去掉所有空格,包括首尾、中間
      或者replaceAll(" +","");   去掉所有空格
    程式碼如下:String str = " hell o "; 
      String str2 = str.replaceAll(" ", ""); 
      System.out.println(str2); 
  •       str = .replaceAll("\\s*", ""); replaceAll( "\n" ,"")為清除換行等

(2)對字串進行處理時,可以利用StringBuild類進行處理之後,再轉化為String型別

  • 舉例:資料之間以逗號“,”分隔,儲存在字串中,實現去掉重複的資料,並且將最新的資料儲存在字串的最後;
//實現最近瀏覽商品ID儲存(ID已經存在的,把原來位置的去掉,在最後重新加入;原來不存在的則直接在最後加入)
	public static String save(String s,String id){
		//這裡還應該判斷商品ID是否已經存在於list當中,如果存在,則刪除原來ID,在最後新增上商品ID
		StringBuilder list = new StringBuilder();
		for (int i = 0; i < s.length(); i++) {
			list.append(s.charAt(i));
		}
			int index = list.indexOf(id);
			if(index != -1){
				list.delete(index,index+2);
			}
			list.append(id+",");
		s = list.toString();
		return s;
	}
	

驗證結果:
String s = "1,2,3,4,";
		System.out.println("原來的字串:"+s);
		String id = "2";
		s = save(s,id);
		System.out.println("新增重複ID後的字串:"+s);
		id = "6";
		s = save(s,id);
		System.out.println("新增沒有重複ID後的字串:"+s);

輸出為:
原來的字串:1,2,3,4,
新增重複ID後的字串:1,3,4,2,
新增沒有重複ID後的字串:1,3,4,2,6,