文字列 ⇒ 配列
せっかくなので、文字列を配列(String型)にするだけでなく、さらに配列(Byte型)に。
import org.apache.commons.lang3.StringUtils; /** カンマで連結された文字列(数値) ⇒ 配列(String型) ⇒ 配列(Byte型) */ // カンマで連結された文字列 String joinedId = "1,3,5,7,9,11"; // カンマで連結された文字列 ⇒ String型の配列 String[] parsedIdArray = StringUtils.split(StringUtils.defaultString(joinedId), ','); // 結果格納用の配列(Byte型) Byte[] idArray = new Byte[parsedIdArray.length]; // String型の要素 ⇒ Byte型の要素 for (int index = 0; index < idArray.length; index++) { idArray[index] = Byte.parseByte(parsedIdArray[index]); } // 出力して確認 for (int index = 0; index < idArray.length; index++) { System.out.println(idArray[index]); }
9行目でStringUtilsのdefaultString()を使っているのは、
変数joinedIdがnullだった場合に空文字(“”)に変換してもらって、
NullPointerExceptionの発生を防ぐためです。
あと、19行目からの出力処理ですが、
JavaScriptの場合は、Array型のインスタンスに対して、toString()するだけで、
そのまま要素をカンマ区切りの文字列として出力してくれますが、
Javaの場合はidArray.toString()とすると、「[Ljava.lang.Byte;@3d4eac69」といったオブジェクト情報?が出力されてしまいます。
配列 ⇒ 文字列
せっかくなので、配列(Byte型)からスタートして、配列(String型)にして、文字列に。
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; /** 配列(Byte型) ⇒ 配列(String型) ⇒ カンマで連結された文字列 */ // 配列(byte型) Byte[] idArray = new Byte[] { 1, 3, 5, 7, 9, 11 }; // NullPointerException防止。idArrayがnullの場合だけ、要素数0のバイト配列をnewして返してくれる。 Byte[] parseKeys = ObjectUtils.defaultIfNull(idArray, new Byte[0]); // 配列(String型) String[] parsedId = new String[parseKeys.length]; // 一つずつ変換 for (int index = 0; index < parseKeys.length; index++) { parsedId[index] = Byte.toString(parseKeys[index]); } // カンマで連結された文字列 String joinedId = StringUtils.join(parsedId, ','); // 結果の確認 System.out.println(joinedId);