import java.util.regex.Matcher;import java.util.regex.Pattern;String str="o中文o";String pattern="";Pattern p=null;Matcher m = null;//中文字碼範圍pattern="[\u4e00-\u9fa5]";p=Pattern.compile(pattern);m=p.matcher(str);while(m.find()){ System.out.println(m.group());}
Archive for the ‘程式設計’ Category
Java JSP 正規式取出中文字
5 六月, 2009Java JSP 讀取UTF-8檔案
4 六月, 2009以下程式不考慮UTF-8 BOM的問題

import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;File fn=new File("utf8.txt");FileInputStream fis = new FileInputStream(fn);//指定utf-8編碼BufferedReader br = new BufferedReader( new InputStreamReader( fis,"utf-8" ) );String file_str_append="";String file_str="";while((file_str_append=br.readLine())!=null){ file_str+=file_str_append;}br.close();fis.close();//將utf-8所有檔案內容輸出System.out.println(file_str);
中央氣象局 RSS 解析正規式 Regex
1 五月, 2009<%@page contentType="text/html; charset=utf-8" errorPage=""%><%@page import="java.util.regex.Pattern"%><%@page import="java.util.regex.Matcher"%><%out.clear();%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Parse Central Weather Demo</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><%String str="";String pattern="^([\\D]+)\\d{2}/\\d{2}\\s([\\D]+)\\s([\\D]+)\\s[\\D]+:\\s(\\d{1,3}\\s~\\s\\d{1,3})\\s[\\D]+:\\s(\\d{1,3})%\\((\\d{2}/\\d{2})\\s(\\d{2}:\\d{2})[\\D]+\\)$";Pattern p=null;Matcher m=null;%> 台北市05/01 今晚至明晨 晴時多雲 溫度: 22 ~ 24 降雨機率: 0%(05/01 16:30發布)<br /><%str=" 台北市05/01 今晚至明晨 晴時多雲 溫度: 22 ~ 24 降雨機率: 0%(05/01 16:30發布)";pattern="^[\\D]+\\d{2}/\\d{2}\\s([\\D]+)\\s([\\D]+)\\s[\\D]+:\\s*(\\d{1,3}\\s~\\s\\d{1,3})\\s[\\D]+:\\s*(\\d{1,3})%\\((\\d{2}/\\d{2})\\s(\\d{2}:\\d{2})[\\D]+\\)$";p = Pattern.compile(pattern);m = p.matcher(str.trim());if(m.find()){ for (int i = 1; i <= m.groupCount(); i++) { out.println("group(" + i + "):" + m.group(i)+"<br />"); } m.reset();}%><hr />明日白天 晴時多雲 溫度: 24 ~ 28 降雨機率: 0% <br /><%str="明日白天 晴時多雲 溫度: 24 ~ 28 降雨機率: 0% ";pattern="^([\\D]+)\\s([\\D]+)\\s[\\D]+:\\s*(\\d{1,3}\\s~\\s\\d{1,3})\\s[\\D]+:\\s*(\\d{1,3})%$";p = Pattern.compile(pattern);m = p.matcher(str.trim());if(m.find()){ for (int i = 1; i <= m.groupCount(); i++) { out.println("group(" + i + "):" + m.group(i)+"<br />"); } m.reset();}%><hr />05/02 溫度:22 ~ 28 晴時多雲<%str="05/02 溫度:22 ~ 28 晴時多雲";pattern="^(\\d{2}/\\d{2})\\s[\\D]+:\\s*(\\d{1,3}\\s~\\s\\d{1,3})\\s([\\D]+)$";p = Pattern.compile(pattern);m = p.matcher(str.trim());if(m.find()){ for (int i = 1; i <= m.groupCount(); i++) { out.println("group(" + i + "):" + m.group(i)+"<br />"); } m.reset();}%></body></html>


執行結結果:

台北市05/01 今晚至明晨 晴時多雲 溫度: 22 ~ 24 降雨機率: 0%(05/01 16:30發布)
group(1):今晚至明晨
group(2):晴時多雲
group(3):22 ~ 24
group(4):0
group(5):05/01
group(6):16:30


明日白天 晴時多雲 溫度: 24 ~ 28 降雨機率: 0%
group(1):明日白天
group(2):晴時多雲
group(3):24 ~ 28
group(4):0


05/02 溫度:22 ~ 28 晴時多雲group(1):05/02
group(2):22 ~ 28
group(3):晴時多雲




備註:中央氣象局的RSS2.0並不是完全符合W3C的標準,且資料呈現不夠有條理,不易被解析
開發有中文內容的專案要考慮的事情
30 四月, 2009跟一個美工人員說目前的專案要有中文,

美工會考慮有沒有適合的中文字型。


跟一個程式人員說目前的專案要有中文,

程式人員會考慮會不會有中文衝碼。


跟一個資料庫管理人員說目前的專案要有中文,

資料庫管理人員會考慮資料儲存是否要用Unicode儲存中文。


跟一個企劃人員說目前的專案要有中文,

企劃人員會考慮內容是否能夠因為中文而引人注目。


跟老闆說目前的專案要有中文,

老闆會考慮什麼時候開始專案會開始賺錢,有沒有中文都沒關係
。
Win32 PHP5 ODBC To Access Demo
27 四月, 2009//設定ODBC來源,使用真實檔案路徑$dblink_id = odbc_connect("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=C:\db.mdb","mdb id","mdb pw" ) or die ("db error");//sql式,選出id的欄位$sql='SELECT id FROM ur_table';if ($dblink_id) { //執行sql $res=odbc_exec($dblink_id,$sql); if($res) { //初始陣列 $arr=array(); //odbc_fetch_row不會回傳陣列,所以必須自行轉置,並指定使用hash的方式推入陣列 while($list=odbc_fetch_array($res,ODBC_ASSOC)){ array_push($arr,$list); } for( $i=0;$i<count($arr);$i++){ //從陣列中取值的方式$arr[陣列索引].[欄位名稱] echo 'id:'.$arr[$i]['id']."\n"; } } else{ echo 'odbe_exec error'."\n"; }}else{ echo 'db link error'."\n";}
JSP 強制下載檔案
10 四月, 2009<%@page import="java.util.ArrayList"%><%@page import="java.io.OutputStream"%><%@page import="java.io.FileInputStream"%><%@page import="java.util.Date"%><%@page import="java.net.URLEncoder"%><%@page import="com.pcyi.walkone.DAO.Verify"%><%@page import="org.hibernate.Session"%><%out.clear();//要給clinet下載時顯示的名字String fileName = "clinet.txt";fileName=URLEncoder.encode(fileName, "utf-8");response.setHeader("Content-Disposition","attachment; filename=" + fileName );String f_path="server_file.txt";FileInputStream fis = new FileInputStream( application.getRealPath(f_path));OutputStream os=response.getOutputStream();byte byteRead;while(-1 != (byteRead = (byte)fis.read())) { //文字檔UNIX換行轉PC換行 if(byteRead=='\n'){ os.write('\r'); } os.write(byteRead);}os.close();if (fis != null) { response.setStatus(200); response.flushBuffer(); fis.close();}%>
Flash 讀取文字檔快取問題
13 二月, 2006Action Script: |
loadVariablesNum("http://whatever_url/whatever.txt?rnd=random(10000), 0); |
這樣就會被當成新的 Request,而不會取得 cache的舊資料!
ACCESS 找出所有1月1日至1月15日的資料
16 一月, 2006members是會員資料表
字串1/1及1/15是指定日期,可以是日期型態可以是符合日期規範的字串型態
隨機取得資料庫N筆資料
21 十月, 2005ASP.NET用DataAdapter以及DataSet填滿DataGrid的流程概要
11 六月, 2005ASP.NET用DataAdapter以及DataSet填滿DataGrid的流程概要
DataSet可以看做是近端的資料庫,可以擁有很多的資料表
而DataAdapter可看做是將遠端的資料表轉換成進端資料表的工具
所以簡易的流程為
- 建立資料庫連結
- 執行SQL
- 利用DataAdapter將結果填入DataSet中
- 控制項資料繫結(DataBind)
‘以下為ASPX後置程式碼 (*.VB)
‘前置匯入詞
Imports System.Data.OleDb
Imports System
Imports System.Data
Imports Microsoft.VisualBasic.Strings
‘假設宣告
Protected WithEvents dg1 As System.Web.UI.WebControls.DataGrid
Protected WithEvents dg2 As System.Web.UI.WebControls.DataGrid
Dim objCon As OleDbConnection
Dim objDataAdapter As OleDbDataAdapter
Dim objCmd As OleDbCommand
Dim sql As String = ""
Dim id As Integer = 0
Dim Ds As DataSet = New DataSet()
‘開始連結資料
Try
objCon.Open()
objCmd = objCon.CreateCommand()
objDataAdapter = New OleDbDataAdapter()
sql = "SELECT * FROM anyTable1 WHERE anyTable1.id = @id;"
objCmd.CommandText = sql
objCmd.Parameters.Add(New OleDbParameter("@id", id))
objDataAdapter.SelectCommand = objCmd
‘將資料庫傳回的資料記錄到Ds裡面名為tb1的資料表
objDataAdapter.Fill(Ds,"tb1")
sql = "SELECT * FROM anyTable2 WHERE anyTable2.id = @id;"
‘因為OleDbParameter @id已經設定過,故不需再次設定
objCmd.CommandText = sql
objDataAdapter.SelectCommand = objCmd
‘將資料庫傳回的資料記錄到Ds裡面名為tb2的資料表
objDataAdapter.Fill(Ds,"tb2")
dg1.DataBind()
dg2.DataBind()
Catch ex As Exception
Response.Write(ex.Message & "An exception of type " & ex.GetType().ToString)
Finally
objCmd.Dispose()
objCon.Close()
End Try
‘以下為ASPX的部分內容(*.ASPX)
<asp:DataGrid ID="dg1" Runat="server"></asp:DataGrid>
<asp:DataGrid ID="dg2" Runat="server"></asp:DataGrid>