1

私は日付文字列を持っています:

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

..日付にイベントがある場合、ボタンのクリックで別のクラスに渡します。

String date_month_year = (String) view.getTag();
if (isHoliday(d, m, y))
{
    Intent i = new Intent(view.getContext(), Events.class);
    i.putExtra("date_string", date_month_year);
    startActivity(i);
}

Events.class で、次のパラメーターを取得します。

Intent intent = getIntent();
String date_string = intent.getStringExtra("date_string");

date_view = (TextView) this.findViewById(R.id.hijridate);
eventdetails = (TextView) this.findViewById(R.id.eventdetails);
date_view.setText(date_string);


String[] dateAr = date_string.split("-|\\||\\(|\\)|\\s+");
m = Integer.parseInt(dateAr[6]);
d = Integer.parseInt(dateAr[3]);
y = Integer.parseInt(dateAr[8]);

これはイスラム暦の月の配列です:

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

私が抱えている問題は、それが 1 単語の月の名前 (つまり、Muharram、Safar、Rajab など) の場合、すべてがスムーズに機能することです。ただし、スペースまたはダッシュを含む単語 (つまり、Rabi-al awwal、Dhul Hijjah) の場合は、次のエラーがスローされますNumberFormatException: unable to parse '' as integerNumberFormatException: unable to parse 'al' as integer

私は何を間違っていますか?

4

1 に答える 1

2

文字列を分割するために多くの異なる文字タイプを使用する必要がある理由はありますか?

失敗する理由は、使用している分割文字が原因です

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

月名にもあります。

その行の後にデバッグ ポイントを置くか、dateAr 配列に対して for each を実行して結果をログに記録します。そうすれば、どのように分割されているかを理解できます。

于 2012-07-12T19:57:52.160 に答える