在空格和破折号上拆分字符串,但不在字符串的值上拆分

时间:2012-07-12 22:00:17

标签: java android string split

我正在设置这样的date_string:

gridcell.setTag(theday + "-" + themonth + "-" + theyear + "|" + hijri_day + "-" + hijri_month + " ("+ hijri_monthno +") " + hijri_year);

我正在分裂它:

String date_month_year = (String) view.getTag();
String[] dateAr = date_month_year.split("-|\\||\\(|\\)|\\s+");

这也是分裂hijri月份名称中的空格和破折号,即Rabi al-Thani或Dhul Hijjah:

private String months[] = {"Muharram","Safar","Rabi al-Awwal","Rabi al-Thani","Jumada al-Awwal","Jumada al-Thani","Rajab","Sha\'ban","Ramadhan","Shawwal","Dhul Qa\'dah","Dhul Hijjah"};

如何分割date_string而不是date_string中的字符串值?

2 个答案:

答案 0 :(得分:1)

最好的方法是将日期分隔符更改为/(斜杠)或。(点)如果你真的想保持这样,那么比分裂后你可以检查字符串数组上的最后一个字符,如果它是一个字母连接,那两个字符串就是一回......

gridcell.setTag(theday + "." + themonth + "." + theyear + "|" + hijri_day + " " + hijri_month + " ("+ hijri_monthno +") " + hijri_year); 

让它成为最简单的方式..

答案 1 :(得分:0)

我尝试逐步拆分您的日期,请检查这是否适合您

List<String> tokens=new ArrayList<String>();

String data="theday-themonth-theyear|hijri_day-Dhul Qa\'dah (hijri_monthno) hijri_year";
String[] tmp = data.split("\\|");
//System.out.println(Arrays.toString(tmp));

for (String s:tmp[0].split("-"))
    tokens.add(s);

System.out.println(tokens);// -> [theday, themonth, theyear]

String[] tmp2=tmp[1].split("\\s*\\(|\\)\\s*");
//System.out.println(Arrays.toString(tmp2));

for (String s:tmp2[0].split("-",2))
    tokens.add(s);
System.out.println(tokens);// -> [theday, themonth, theyear, hijri_day, Dhul Qa'dah]

tokens.add(tmp2[1]);
tokens.add(tmp2[2]);
System.out.println(tokens);// -> [theday, themonth, theyear, hijri_day, Dhul Qa'dah, hijri_monthno, hijri_year]
相关问题