Char Array splitten

Fohnbit

Top Contributor
Hallo,

ich habe ein char Array

Ich möchte dieses mit dem hex Zeichen "0xff" spielten.

Also das gleiche wie mit einem String.split().

Das Array zu String und dann per 0xff splitten geht leider nicht!

Wie kann ich also Char Array aufteilen. Trennzeichen = 0xff.

Vielen Dank!
 
Du mußt durch das char Array laufen und dir die Chars jeweils die chars bis zum Trennzeichen in einem Array merken. Diese neuen Arrays fügst du dann an ein Gesamtarray an.

Warum erstellst Du nicht aus dem char-Array einen String und splittest ihn dann mit split()? Dabei kommen String-Arrays raus, die Du zu char-Array umformen kannst, meiner Meinung leichter.
 
Du könntest manuell die 0xFF-Stellen suchen und dann mit System#arraycopy das ganze "splitten".
Ich kann mir auch vorstellen, dass man hier eine mehr oder weniger schöne rekursive Lösung basteln kann.

Nachtrag:
Ich dachte da an so etwas wie:
Java:
public class SplitArrayUtility {
	public static char[][] splitArray(char[] source, char splitChar) {
		if (source==null) {
			return null;
		}
		return helperSplitArray(source, splitChar, 0, source.length);
	}
	
	private static char[][] helperSplitArray(char[] source, char splitChar, int beginIndex, int endIndex) {
		for (int i=beginIndex;i<endIndex;i++) {
			if (source[i]==splitChar) {
				char[][] rightPart = helperSplitArray(source, splitChar, i+1, endIndex);
				char[][] result = new char[rightPart.length+1][];
				System.arraycopy(rightPart, 0, result, 1, rightPart.length);
				result[0] = new char[i-beginIndex];
				System.arraycopy(source, beginIndex, result[0], 0, result[0].length);
				return result;
			}
		}
		char[][] result = new char[1][endIndex-beginIndex];
		System.arraycopy(source, beginIndex, result[0], 0, result[0].length);
		return result;
	}
	
	public static void main(String[] args) {
		char[] testArray = new char[]{1,2,3,0xFF,4,5,6,7,8,0xFF,9,0xFF,0xFF,10,11};
		char[][] splitResult = splitArray(testArray, (char) 0xFF);
		for (int i=0;i<splitResult.length;i++) {
			System.out.print("array "+i+": ");
			for (int j=0;j<splitResult[i].length;j++) {
				System.out.print((int) splitResult[i][j]+", ");
			}
			System.out.println();
		}
	}
	
}
 
Zuletzt bearbeitet:
Mach einen String draus und verwende die vorhandenen Möglichkeiten.

Java:
	static char[] arr ={'a', 'b', 0xFF, 'c', 0xFF, 'd' };
	// das ginge vielleicht auch eleganter
	static char[] sepChar={0xFF};
	static String sep = new String(sepChar);

	public static void print(String[] arr) {
		for (int i=0; i<arr.length; i++) {
			System.out.println(arr[i]);
		}
	}

	public static void main(String[] args) {
		String str = new String(arr);
		System.out.println(str);
		print(str.split(sep));
	}
 

Zurück
Oben