2016-05-05 15 views
1

私は文字列からタイムスタンプを取り除こうとしています。具体的にはファイル名です。文字列からタイムスタンプを削除します

部分文字列を作成しようとしましたが、タイムスタンプのサイズが可変です。

例えば、時にはそれがこのようなものだ。このような

2016-05-05 03:45:00.907text.txt 

、時には:

2016-05-05 03:45:00.83text.txt 

たぶん正規表現が答えているのですか?

処理される文字列には、タイムスタンプとファイル名が常に付きます。ファイル名は数字または文字で始まることができます。

私はそれがJava用だと忘れました。

+0

'text.txt'は常に同じ長さですか?または単に正規表現を使用する – WillardSolutions

+0

ファイル名には数字が含まれますか? – GrumpyCrouton

+0

はい、数字を含むことができます@GrumpyCrouton – Zamaking

答えて

0
String input = "2016-05-05 03:45:00.907text.txt"; 
String regex = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d+"; 
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSS"); 
Pattern pattern = Pattern.compile(regex); 
Matcher matcher = pattern.matcher(input); 

if(matcher.find()){ 
    String output = matcher.group(); 

    Date date = formatter.parse(output); 
    long time = date.getTime(); 

    System.out.println(time); 
} 

正規表現を使用して日付を見つけ、適切な日付で文字列を変換してからタイムスタンプを取得する必要があります。

+0

これで解決しました。ありがとうございます。 – Zamaking

1

このsed意志のクリーンアップは、タイムスタンプ

$ echo "2016-05-05 03:45:00.83text.txt" | 
sed -r 's/^[0-9]{4}(-[0-9]{2}){2} ([0-9]{2}:){2}[0-9]{2}\.[0-9]{2,3}//' 

text.txt 

はまたあなたのファイル名が「7text.txt」である場合しかし、それは違いを知ることができません、他のケースのために働くだろう。

0

これは削除されますリードタイムスタンプ:

filename = filename.replaceAll("^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}(\\.\\d+)?", ""); 

しかし、あなたは他の部分は数字で起動したときに「短い」タイムスタンプの終わりと他の部分の開始を識別することができません。

これは、タイムスタンプが秒単位で終了する場合(端数なし)も処理します。

関連する問題