ปัญหาการใช้ 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
No comments yet.