最近在使用 StringTokenizer 發現有一些要注意的地方 與大家分享
不過可能大家都知道啦~^^
以下是我的程式碼
StringTokenizer parser = new StringTokenizer(s, v);
String[] str = new String[parser.countTokens()];
int i = 0;
while (parser.hasMoreElements()) {
str[i++] = (String) parser.nextToken();
}
當s=”,a,,c,,e,” 時,v=”,”
切開來的String arrey 竟然只有
str[0]=”a”;
str[1]=”c”;
str[2]=”e”;
那些空的不見了
最後用了s.split(“,”) 才可以看到str[0]=””;
str[1]=”a”;
str[2]=””;
str[3]=”c”;
str[4]=””;
str[5]=”e”;
以前原本想說StringTokenizer 和String.split 很像 沒想到有這種大的差異
PS.要提醒 用String.split 最後的那個, 它不會有值 …
原本想找如何利用Date() 可以得到年月日並轉成Timestamp ,不過查了JAVA API都沒有直接可以使用的method,所以就在網路上找尋,後來有看到這篇寫到一些關鍵點,小小測了一下就可以得到只有年月日的Timestamp
SimpleDateFormat df = new SimpleDateFormat(“yyyy/MM/dd 00:00:00”);
Date d1= df.parse(df.format(d.getTime()));
System.out.println(d.getTime());
System.out.println(df.format(d.getTime()));
System.out.println(d1.getTime());
PS.Timestamp :就是從1970-1-1開始起算的毫秒數..是long型態
more..
來源出處:
www.javaworld.com.tw
如何不用oracle的to_date()把Date存進資料庫
當我們在資料庫的欄位型態是DATE的時候,而我們又是用oracle,要把日期的資料塞進去通常會這樣下SQL:
1
|
"insert into order (order_id, order_date) values ('0001', to_date('2004/12/30 12:00:00','YYYY/MM/DD HH24:MI:SS'))"
|
使用oacle的to_date()的function,可以很方便的達到這個目的,但是這樣會有一個問題,就是今天如果客戶端的資料庫不想用oracle,想換另一個資料庫(ex:
SQLServer), 這樣的話就得改程式了
其實JAVA有提供一個方法,一樣可以達到這個目的,而可以不用oracle的to_date()
function
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
String driver = "oracle.jdbc.driver.OracleDriver'; String url = "jdbc:oracle:thin:@127.0.0.1:1521:ora1"; String user = "system"; String password = "manager"; Class.forName(driver); Connection connection = DriverManager.getConnection(url, user, password);
String sql = "insert into order (order_id, order_date) values (?, ?)";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, "0001");
SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date date = (Date) format.parse("2004/12/30 12:00:00"); Timestamp ts = new Timestamp(date.getTime()); statement.setTimestamp(2, ts);
|
Java 在 1.4 版後開始才加入一個 java.util.regex 的函式庫 ,但是對sed和awk這樣的Unix的標準實用工具,以及Python,Perl之類的語言來講,它早就已經成為其不可或缺的組成部分了。
正規表示式的“祖先”可以一直上溯至對人類神經系統如何工作的早期研究。Warren McCulloch 和 Walter Pitts 這兩位神經生理學家研究出一種數學方式來描述這些神經網路。
1956 年, 一位叫 Stephen Kleene 的數學家在 McCulloch 和 Pitts 早期工作的基礎上,發表了一篇標題為“神經網事件的表示法”的論文,引入了正規表示式的概念。正規表示式就是用來描述他稱為“正則集的代數”的運算式,因此採用“正規表示式”這個術語。
隨後,發現可以將這一工作應用於使用 Ken Thompson 的計算搜索演算法的一些早期研究,Ken Thompson 是 Unix 的主要發明人。正規表示式的第一個實用應用程式就是 Unix 中的 qed 編輯器。
如他們所說,剩下的就是眾所周知的歷史了。從那時起直至現在正規表示式都是基於文本的編輯器和搜索工具中的一個重要部分。
雖然初看起來正規表示式的語法有點讓人望而生畏,但它提供了一種精練的動態語言,使我們能用一種通用的方式來解決各種字串的問題,包括匹配,選擇,編輯以及校驗。
以前都只會用基本的Regular Expression,而且都沒有熟讀,所以半調子的用法下,就是對它產生敬畏,不過在自已實際玩了之後,還蠻容易的,加上Eclipse 工具中plug in工具 (QuickREx)可以進行驗證,這下更讓人很容易可以寫出神奇的表示式了,原本是想再更用功的,寫一篇詳細點的工具文章,不過在查了一下網路上的文章後,發現大家都寫的還不錯,所以就以純欣賞的角度來觀看其它人的文章囉 。能靈活運用Regular Expression,可以讓程式精簡、效率增強,重點是~一堆符號可以讓一些低階工程師對你景仰不已…呵~~呵!!
以下是二套在Eclipse 可以驗證Regular Expression的工具,使用蠻方便的,我目前是使用QuickRex,簡單好用,大家可以去試試看!!
QuickRex match 的字串他會highlight起來,感覺還不賴!! 但要注意的是,這裡寫好的R egular Expression的字串,在Java程式使用時,因為 \的問題,所以都要再多補一個才行喔!
Regular Expression Tester 蠻不錯用的功能,最重點的是他有tip 提示,這樣就不用在傷透腦筋時一直在翻文件了,不過這個需要license
我有閱讀的相關文章出處:
JavaWorld@TW – Java Regular Expression的學習筆記 作者:kebin_liu
Java 與 Regular Expression 作者:陳鍾誠
正则表达式——Java篇 作者:mienflying
正则表达式的历史
近期留言