由於產生以下時間戳由java.sql.Timestamp:Java的時間戳正則表達式
2014-10-20 11:17:55.19
我需要一個「長型」時間戳(不含標點符號),所以可以幫助什麼的正則表達式來刪除這些字符:
'-', ':', ' ', '.'
所以,我可以得到一個結果,看起來像:
2014102011175519
由於產生以下時間戳由java.sql.Timestamp:Java的時間戳正則表達式
2014-10-20 11:17:55.19
我需要一個「長型」時間戳(不含標點符號),所以可以幫助什麼的正則表達式來刪除這些字符:
'-', ':', ' ', '.'
所以,我可以得到一個結果,看起來像:
2014102011175519
空白替換所有\D
(非數字):
str = str.replaceAll("\\D", "");
或者使用日期格式,因爲java.sql.Timestamp中是一個日期:
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSS");
String str = sdf.format(timestamp);
另外,在Java 8中,java.sql.Timestamp類具有新方法,例如['toInstant' ](http://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html#toInstant--)轉換爲新的java.time包中的對象。 ['Instant'](http://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)保留'Timestamp'中包含的納秒。 – 2014-10-20 18:18:36
使用string.replaceAll
函數從輸入字符串中刪除-
,:
,,
.
字符。
String s = "2014-10-20 11:17:55.19";
System.out.println(s.replaceAll("[-: .]", ""));
輸出:
2014102011175519
/([^\d])/g
正則表達式中替換功能
replaceAll("[^\d]","")
或多個不久
replaceAll("\D","")
''[^ \ d]'與簡單的'\ D'相同。用大寫字母表示的速記字符類別是其小寫字母的負面版本。 (同樣,''[^ \ w]'=='\ W') – funkwurm 2014-10-20 15:30:34
@funkwurm +1 :)謝謝 – nu11p01n73R 2014-10-20 15:33:03
要知道,一個[ java.sql.Timestamp](http://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html)解析爲[nanoseconds](https://en.wikipedia.org/wiki /納秒)。因此,其字符串表示形式中的小數秒可能有[多達九位數字](http://docs.oracle.com/javase/8/docs/api/java/sql/Timestamp.html#toString--)。所以你的結果字符串在不同的值上會有不同的長度。這可能是一些應用程序的問題。 – 2014-10-20 18:08:39