2013-10-08 2 views
1

Я пытаюсь разделить дату с миллисекундами и распечатать в моем формате, но с индексом из связанного исключения. Он работает в случае split ("/"), но не с split (".").Функция разделения строк не работает по желанию

Я не знаю, почему это происходит.

Кодекс:

public class c { 

public static void main(String[] arg) 
{ 
    Date date=new Date();                  
    DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss.FFF");     
    System.out.println(formatter.format(date)); 

    String a=formatter.format(date); 
    String b[]=a.split(" ")[0].split("/"); 
    String x1=(Integer.parseInt(b[2])-2000)+b[1]+b[0]; 
    System.out.println("date part is : "+x1); 
    String c[]=a.split(" ")[1].split(":"); 
    System.out.println(c[0]); 
    System.out.println(c[1]); 
    System.out.println(c[2]); 
    System.out.println(c[2].trim().split(".")[0]);// exception at this line 
    System.out.println(c[2].trim().split(".")[1]); 
    String x2=c[0]+c[1]+c[2].split(".")[0]+c[2].split(".")[1]+""; 
    System.out.println("time part is : "+x2); 
} 
} 

Log является:

08/10/2013 12:02:18.002 
date part is : 131008 
12 
02 
18.002 
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:0 at c.main(c.java:22) 
+6

как @Tichodroma указал, меняя ''. "' '' '\\." 'должен делать трюк, но ... ... ваш код ужасен ! Почему вы даже беспокоитесь о том, чтобы делать все эти конкатенации и разбивать jugglings, в то время как есть очень простые аксессоры, которые вы можете использовать в классе 'Date'? –

+0

@ Orabîg Аксессоры на 'Date' устарели. –

+0

Ну, хорошо, но используя SimpleDatFormat и извлекайте информацию из результирующей строки. Звучит ли это лучше, чем использование базовых Data accessors? Я так не думаю (imho) –

ответ

5

java.lang.String.split(String regex) принимает регулярные выражения в качестве аргумента.

Одна точка . является регулярным выражением для «любого символа». Таким образом, вы разделяете ввод данных после каждого символа.

Побег точка:

split("\\."); 
+0

спасибо, это сработало ... – HimanshuR

+0

[Принять ответ] (http://meta.stackexchange.com/a/5235/218453), если это помогло. – Jayamohan

0

Вы можете использовать java.util.regex.Pattern.quote (" "), чтобы разбить строку на"."

str.split (java.util.regex.Pattern.quote ("."));

0

попытайтесь не разделить ... u всегда можете использовать этот форматтер .day | .month | .hour или так далее ....

Смежные вопросы