ปัญหาการใช้ split method ใน String

หลังจากที่เคยเขียน ปัญหา การใช้ split method กับ ทศนิยม (.) มาแล้วจาก การ split จุดทศนิยมใน Java วันนี้เจอปัญหาอีกประเด็นก็คือ กรณีที่ข้อมูลหลังเครื่องหมายที่จะทำการ split นั้นเป็นค่าว่าง ทำให้ split method ทำงานไม่ถูกต้อง ตัวอย่างเช่น
มีข้อมูลดังนี้

"A|B|C|||"

Code ตัวอย่างในการตัดข้อความด้วย split method จะใช้ดังนี้

/**
 * File Name : TestSplit.java
 * Created Date : Feb 11, 2010 : 11:07:09 AM
 * Copyright © 2010 www.fun4station.com
 */
package com.fun4station.test;

/**
 * @Author Supot Saelao 
 * @Version 1.0
 */
public class TestSplit {
	public static void main(String[] args) {
		String data = "A|B|C|||";	
		String[] datas = data.split("\\|");
		System.out.println("size of data : " + datas.length);
		print(datas);
	}
	
	private static void print(String[] datas){
		System.out.println("value of data ");
		for(String str : datas){
			System.out.println(str);
		}
	}
}

แทนที่ output ที่จะได้ควรจะเป็น

size of data : 6

แต่ดันออกมาเป็น

size of data : 3

หลังจากขอความช่วยเหลือจากอาจารย์ google ก็ได้คำตอบ และแก้ไขโดยเพิ่ม -1 เข้าไปใน method split ดังนี้

String[] datas = data.split("\\|", -1);

จากการทดลองสามารถแก้ปัญหาได้

ข้อมูลอ้างอิ่ง
http://www.rgagnon.com/javadetails/java-0438.html
sun String.split

  1. No comments yet.

  1. No trackbacks yet.