148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood/* 248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Copyright (c) 2006-2011 Christian Plattner. All rights reserved. 348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Please refer to the LICENSE.txt for licensing details. 448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */ 548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpackage ch.ethz.ssh2.util; 648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood/** 848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Tokenizer. Why? Because StringTokenizer is not available in J2ME. 948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * 1048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @author Christian Plattner 1148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @version 2.50, 03/15/10 1248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */ 1348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwoodpublic class Tokenizer 1448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood{ 1548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood /** 1648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Exists because StringTokenizer is not available in J2ME. 1748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * Returns an array with at least 1 entry. 1848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * 1948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @param source must be non-null 2048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @param delimiter 2148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood * @return an array of Strings 2248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood */ 2348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood public static String[] parseTokens(String source, char delimiter) 2448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 2548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood int numtoken = 1; 2648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 2748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood for (int i = 0; i < source.length(); i++) 2848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 2948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood if (source.charAt(i) == delimiter) 3048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood numtoken++; 3148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 3248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 3348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood String list[] = new String[numtoken]; 3448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood int nextfield = 0; 3548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 3648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood for (int i = 0; i < numtoken; i++) 3748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 3848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood if (nextfield >= source.length()) 3948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 4048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood list[i] = ""; 4148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 4248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood else 4348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood { 4448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood int idx = source.indexOf(delimiter, nextfield); 4548ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood if (idx == -1) 4648ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood idx = source.length(); 4748ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood list[i] = source.substring(nextfield, idx); 4848ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood nextfield = idx + 1; 4948ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 5048ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 5148ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood 5248ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood return list; 5348ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood } 5448ded2421114c4c87ef3f8005c9f793a5d077cbdMike Lockwood} 55