0

私のプログラムでは、ユーザーは命名スキームを指定できるはずです。彼らが指定する命名スキームには、「yyyyMMdd」、「MM-dd-yyyy」、「yyyy/MM/dd」などの単純な日付形式が含まれている必要があります。日、月、年の順序は重要ではありませんただし、特定の順序が必要になる場合があります (年が最初に来て、月が続き、日が続くなど)。SimpleDateFormat クラスで使用するために、文字列からこの日付を簡単に取得できるようにしたいと考えています。

ここではいくつかの例を示します。

input string:    "abc?>@dyyyy-MM-dd-|(s*&d)"
output string:   "yyyy-MM-dd"

input string:    "daddy-MM/dd/yyyy-moMMy"
output string:   "MM/dd/yyyy"

最終的に私がやりたいことは、(ユーザーが提供する文字列で) 指定された日付形式を現在の日付に置き換えることです。

ユーザーが年、月、日のみを入力できるように修正したい場合は、次のようにすることができます。

String dateFormat = name.substring(name.indexOf("yyyy"), name.indexOf("dd") + 2)

ただし、これは、ユーザーが文字列の残りの部分で文字列シーケンス「yyyy」および「dd」を使用できないことを意味します。そうしないと、このメソッドは機能しません。この式は正規表現でも表すことができますが、正規表現に一致する部分文字列を文字列から簡単に引き出す方法がわかりません。

4

1 に答える 1

2

正規表現パターンを使用

(MM|dd|yyyy)[\\/-]?(?!\\1)(MM|dd|yyyy)[\\/-]?(?!\\1)(?!\\2)(MM|dd|yyyy)

[...]上記のパターンのセクションに許可したい他のセパレーターを追加したい場合があります。

于 2012-10-16T16:35:54.847 に答える