導航:首頁 > 知識產權 > vb版權符號

vb版權符號

發布時間:2022-05-02 20:44:27

Ⅰ 圓圈裡面一個C是什麼意思

©版權標記又稱「版權符號」,美國對版權頁的別稱。©後面的時間是開發的開始時間和結束時間,例如©1985-2002 Microsoft意思就是微軟在1985年到2002年期間完成對XP的開發維護,但並不意味著2012可以對其進行盜版,軟體的版權保存在其持有者手上至少是50年以上。

©2011 Bai的字面意思是2011年開始研發,首次注冊,處於尚未完成階段,2010年你不可以對其進行盜版,如果你有興趣,可以在其未完成版權申請之前,先一步進行研發、申請專利等。

統使用的版權標記為 「版權所有」 字樣。版權標記通常還須伴有關於作品版權情況的說明文字。例如《世界版權公約》規定,版權標記由版權符號©即英文right(版權)一詞的首字母外加一個圓圈,版權所有者的姓名以及作品首次出版或注冊年份三部分組成。版權標記須刊載在作品的顯著部位。圖書形式的作品有專頁刊載版權標記,稱版權頁。中國圖書版權頁還常常刊載作品的版次、印次、印數、定價以及發行人等。

Ⅱ VB修改批量文件名

假如一個文件為1a.txt一個為1b.txt呢,該怎麼改,你總得說清楚。改了第一個就改不了第二個了。

====================================
'給你一個代碼,不用控制項的,你沒說遇到改後文件名一樣怎麼辦,所以我的做法是文件名一樣就跳過,如果不含數字的也跳過。

'*************************************************************************
'**模 塊 名:Form1
'**說 明:廈門大學化學系 版權所有2009 - 2010(C)
'**創 建 人:吳志明(寒江雪)
'**日 期:2009-03-10 19:15:18
'**聯系方式:[email protected]
'**主 頁:
'**描 述:
'**版 本:V1.0.0
'*************************************************************************
Private Sub Command1_Click()
On Error GoTo ToExit '打開錯誤陷阱
'------------------------------------------------
Dim FileName, NewFileName As String
FileName = Dir("C:\temp\", vbReadOnly + vbHidden + vbSystem + vbNormal)

Do While Not FileName = ""

NewFileName = NUM(FileName)
If NewFileName <> "" And Left(NewFileName, 1) <> "." Then
Name "C:\temp\" & FileName As "c:\temp\" & NewFileName
End If
FileName = Dir()
Loop

'------------------------------------------------
Exit Sub
'----------------
ToExit:
Resume Next
End Sub

Private Function NUM(ByVal strTest As String) As String
Dim strExtend As String
Dim strRet As String
Dim bytArray() As Byte
Dim intcount As Integer
If Len(strTest) > 3 Then
If Mid(strTest, Len(strTest) - 3, 1) = "." Then strExtend = Right(strTest, 4)
End If
bytArray = strTest
For intcount = 0 To UBound(bytArray)
If bytArray(intcount) >= Asc("0") And bytArray(intcount) <= Asc("9") Then
strRet = strRet + Chr(bytArray(intcount))
End If
Next
strRet = strRet + strExtend
NUM = strRet
End Function

==================================
目錄要任意的話把代碼中"C:\temp\"換掉就好了嘛,比如換成text1.text

Ⅲ php preg_match_all 的正則表達式的書寫方法

正則表達式的基本語法
一個正則表達式,分為三個部分:分隔符,表達式和修飾符。
分隔符可以是除了特殊字元以外的任何字元(比如"/ !"等等),常用的分隔符是"/"。表達式由一些特殊字元(特殊字元詳見下面)和非特殊的字元串組成,比如"[a-z0-9_-]+@[a-z0-9_-.]+"可以匹配一個簡單的電子郵件字元串。修飾符是用來開啟或者關閉某種功能/模式。下面就是一個完整的正則表達式的例子:

/hello.+?hello/is

上面的正則表達式"/"就是分隔符,兩個"/"之間的就是表達式,第二個"/"後面的字元串"is"就是修飾符。
在表達式中如果含有分隔符,那麼就需要使用轉義符號"/",比如"/hello.+?//hello/is"。轉義符號除了用於分隔符外還可以執行特殊字元,全部由字母構成的特殊字元都需要"/"來轉義,比如"/d"代表全體數字。
正則表達式的特殊字元
正則表達式中的特殊字元分為元字元、定位字元等等。
元字元是正則表達式中一類有特殊意義的字元,用來描述其前導字元(即元字元前面的字元)在被匹配的對象中出現的方式。元字元本身是一個個單一的字元,但是不同或者相同的元字元組合起來可以構成大的元字元。
元字元:
大括弧:大括弧用來精確指定匹配元字元出現的次數,例如"/pre{1,5}/"表示匹配的對象可以是"pre"、"pree"、"preeeee"這樣在"pr"後面出現1個到5個"e"的字元串。或者"/pre{,5}/"代表pre出現0此到5次之間。
加號:"+"字元用來匹配元字元前的字元出現一次或者多次。例如"/ac+/"表示被匹配的對象可以是"act"、"account"、"acccc"等在"a"後面出現一個或者多個"c"的字元串。"+"相當於"{1,}"。
星號:"*"字元用來匹配元字元前的字元出現零次或者多次。例如"/ac*/"表示被匹配的對象可以是"app"、"acp"、"accp"等在"a"後面出現零個或者多個"c"的字元串。"*"相當於"{0,}"。
問號:"?"字元用來匹配元字元前的字元出現零次或者1次。例如"/ac?/"表示匹配的對象可以是"a"、"acp"、"acwp"這樣在"a"後面出現零個或者1個"c"的字元串。"?"在正則表達式中還有一個非常重要的作用,即"貪婪模式"。
還有兩個很重要的特殊字元就是"[ ]"。他們可以匹配"[]"之中出現過的字元,比如"/[az]/"可以匹配單個字元"a"或者"z";如果把上面的表達式改成這樣"/[a-z]/",就可以匹配任何單個小寫字母,比如"a"、"b"等等。
如果在"[]"中出現了"^",代表本表達式不匹配"[]"內出現的字元,比如"/[^a-z]/"不匹配任何小寫字母!並且正則表達式給出了幾種"[]"的默認值:

[:alpha:]:匹配任何字母

[:alnum:]:匹配任何字母和數字

[:digit:]:匹配任何數字

[:space:]:匹配空格符

[:upper:]:匹配任何大寫字母

[:lower:]:匹配任何小寫字母

[:punct:]:匹配任何標點符號

[:xdigit:]:匹配任何16進制數字
另外下面這些特殊字元在轉義符號"/"轉義後代表的含義如下:

s:匹配單個的空格符

S:用於匹配除單個空格符之外的所有字元。

d:用於匹配從0到9的數字,相當於"/[0-9]/"。

w:用於匹配字母,數字或下劃線字元,相當於"/[a-zA-Z0-9_]/"。

W:用於匹配所有與w不匹配的字元,相當於"/[^a-zA-Z0-9_]/"。

D:用於匹配任何非10進制的數字字元。

.:用於匹配除換行符之外的所有字元,如果經過修飾符"s"的修飾,"."可以代表任意字元。
利用上面的特殊字元可以很方便的表達一些比較繁瑣的模式匹配。例如"//d0000/"利用上面的正則表達式可以匹配萬以上,十萬一下的整數字元串。
定位字元:
定位字元是正則表達式中又一類非常重要的字元,它的主要作用是用於對字元在匹配對象中的位置進行描述。

^:表示匹配的模式出現在匹配對象的開頭(和在"[]"裡面不同)

$:表示匹配的模式出現在匹配對象的末尾

空格:表示匹配的模式出現在開始和結尾的兩個邊界之一

"/^he/":可以匹配以"he"字元開頭的字元串,比如hello、height等等;

"/he$/":可以匹配以"he"字元結尾的字元串即she等;

"/ he/":空格開頭,和^的作用一樣,匹配以he開頭的字元串;

"/he /":空格結束,和$的作用一樣,匹配以he結尾的字元串;

"/^he$/":表示只和字元串"he"匹配。

正則表達式除了可以用戶匹配,還可以用括弧"()"來記錄需要的信息,儲存起來,給後面的表達式讀取。比如:

/^([a-zA-Z0-9_-]+)@([a-zA-Z0-9_-]+)(.[a-zA-Z0-9_-])$/

就是記錄郵件地址的用戶名,和郵件地址的伺服器地址(形式為[email protected]之類的),在後面如果想要讀取記錄下來的字元串,只是需要用"轉義符+記錄的次序"來讀取。比如"/1"就相當於第一個"[a-zA-Z0-9_-]+","/2"相當於第二個([a-zA-Z0-9_-]+),"/3"就是第三個(.[a-zA-Z0-9_-])。但是在PHP中,"/"是一個特殊的字元,需要轉義,所以""到了PHP的表達式中就應該寫成"//1"。

其他特殊符號:

"|":或符號"|"和PHP裡面的或一樣,不過是一個"|",而不是PHP的兩個"||"!意思就是可以是某個字元或者另一個字元串,比如"/abcd|dcba/"可能匹配"abcd"或者"dcba"。
貪婪模式
前面在元字元中提到過"?"還有一個重要的作用,即"貪婪模式",什麼是"貪婪模式"呢?
比如我們要匹配以字母"a"開頭字母"b"結尾的字元串,但是需要匹配的字元串在"a"後面含有很多個"b",比如"a bbbbbbbbbbbbbbbbb",那正則表達式是會匹配第一個"b"還是最後一個"b"呢?如果你使用了貪婪模式,那麼會匹配到最後一個"b",反之只是匹配到第一個"b"。

使用貪婪模式的表達式如下:

/a.+?b/

/a.+b/U

不使用貪婪模式的如下:

/a.+b/

上面使用了一個修飾符U,詳見下面的部分。
修飾符
在正則表達式裡面的修飾符可以改變正則的很多特性,使得正則表達式更加適合你的需要(注意:修飾符對於大小寫是敏感的,這意味著"e"並不等於"E")。正則表達式裡面的修飾符如下:

i :如果在修飾符中加上"i",則正則將會取消大小寫敏感性,即"a"和"A" 是一樣的。

m:默認的正則開始"^"和結束"$"只是對於正則字元串如果在修飾符中加上"m",那麼開始和結束將會指字元串的每一行:每一行的開頭就是"^",結尾就是"$"。

s:如果在修飾符中加入"s",那麼默認的"."代表除了換行符以外的任何字元將會變成任意字元,也就是包括換行符!

x:如果加上該修飾符,表達式中的空白字元將會被忽略,除非它已經被轉義。

e:本修飾符僅僅對於replacement有用,代表在replacement中作為PHP代碼。

A:如果使用這個修飾符,那麼表達式必須是匹配的字元串中的開頭部分。比如說"/a/A"匹配"abcd"。

E:與"m"相反,如果使用這個修飾符,那麼"$"將匹配絕對字元串的結尾,而不是換行符前面,默認就打開了這個模式。

U:和問號的作用差不多,用於設置"貪婪模式"。
PCRE相關的正則表達式函數
PHP的Perl兼容正則表達式提供的多個函數,分為模式匹配,替換和匹配數目等等:
1、preg_match :

函數格式:int preg_match(string pattern, string subject, array [matches]);

這個函數會在string中使用pattern表達式來匹配,如果給定了[regs],就會將string記錄到[regs][0]中,[regs][1]代表使用括弧"()"記錄下來的第一個字元串,[regs][2]代表記錄下來的第二個字元串,以此類推。preg如果在string中找到了匹配的pattern,就會返回"true",否則返回"false"。
2、preg_replace :

函數格式:mixed preg_replace(mixed pattern, mixed replacement, mixed subject);

這個函數會使用將string中符合表達式pattern的字元串全部替換為表達式replacement。如果replacement中需要包含pattern的部分字元,則可以使用"()"來記錄,在replacement中只是需要用"/1"來讀取。
3、preg_split :

函數格式:array preg_split(string pattern, string subject, int [limit]);

這個函數和函數split一樣,區別僅在與split可以使用簡單正則表達式來分割匹配的字元串,而preg_split使用完全的Perl兼容正則表達式。第三個參數limit代表允許返回多少個符合條件的值。
4、preg_grep :

函數格式:array preg_grep(string patern , array input);

這個函數和preg_match功能基本上,不過preg_grep可以將給定的數組input中的所有元素匹配,返回一個新的數組。 下面舉一個例子,比如我們要檢查Email地址的格式是否正確:
<?php

function emailIsRight($email) {

if (preg_match("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$email)) {

return 1;

}

return 0;

}

if(emailIsRight('[email protected]')) echo '正確<br>';

if(!emailIsRight('y10k@fffff')) echo '不正確<br>';

?>
上面的程序會輸出"正確<br>不正確"。
PHP中的Perl兼容正則表達式和Perl/Ereg正則表達式的區別
雖然叫做「Perl兼容正則表達式」,但是和Perl的正則表達式相比,PHP的還是由一些不同,比如修飾符「G」在Perl裡面代表全部匹配,但是在PHP中沒有加入對這個修飾符的支持。

還有就是和ereg系列函數的區別,ereg也是PHP中提供的正則表達式函數,不過和preg相比,要弱上很多。
1、ereg裡面是不需要也不能使用分隔符和修飾符的,所以ereg的功能比preg要弱上不少。

2、關於".":點在正則裡面一般是除了換行符以外的全部字元,但是在ereg裡面的"."是任意字元,即包括換行符!如果在preg裡面希望"."能夠包括換行符,可以在修飾符中加上"s"。

3、ereg默認使用貪婪模式,並且不能修改,這個給很多替換和匹配帶來麻煩。

4、速度:這個或許是很多人關心的問題,會不會preg功能強大是以速度來換取的?不用擔心,preg的速度要遠遠比ereg快,筆者做了一個程序測試:
<?php

echo "Preg_replace used time:";

$start = time();

for($i=1;$i<=100000;$i++) {

$str = "ssssssssssssssssssssssssssss";

preg_replace("/s/","",$str);

}

$ended = time()-$start;

echo $ended;

echo "ereg_replace used time:";

$start = time();

for($i=1;$i<=100000;$i++) {

$str = "ssssssssssssssssssssssssssss";

ereg_replace("s","",$str);

}

$ended = time()-$start;

echo $ended;

echo "str_replace used time:";

$start = time();

for($i=1;$i<=100000;$i++) {

$str = "sssssssssssssssssssssssssssss";

str_replace("s","",$str);

}

$ended = time()-$start;

echo $ended;

?>
結果:

Preg_replace used time:5

ereg_replace used time:15

str_replace used time:2

str_replace因為不需要匹配所以速度非常快,而preg_replace的速度比ereg_replace要快上不少。
關於PHP3.0對於preg的支持
在PHP 4.0中默認加入了preg支持,但是在3.0中確沒有。如果在3.0中希望使用preg函數,必須載入php3_pcre.dll文件,只要在php.ini的extension部分設置加入"extension = php3_pcre.dll"然後從新啟動PHP就可以了!
其實正則表達式還常用於UbbCode的實現,很多PHP論壇都使用了這個方法(比如zForum zphp.com或者vB vbullent.com),但是具體的代碼比較長。

正則表達式(regular expression)描述了一種字元串匹配的模式,可以用來檢查一個串是否含有某種子串、將匹配的子串做替換或者從某個串中取出符合某個條件的子串等。
列目錄時,dir *.txt或ls *.txt中的*.txt就不是一個正則表達式,因為這里*與正則式的*的含義是不同的。
為便於理解和記憶,先從一些概念入手,所有特殊字元或字元組合有一個總表在後面,最後一些例子供理解相應的概念。

正則表達式

是由普通字元(例如字元 a 到 z)以及特殊字元(稱為元字元)組成的文字模式。正則表達式作為一個模板,將某個字元模式與所搜索的字元串進行匹配。
可以通過在一對分隔符之間放入表達式模式的各種組件來構造一個正則表達式,即/expression/

普通字元

由所有那些未顯式指定為元字元的列印和非列印字元組成。這包括所有的大寫和小寫字母字元,所有數字,所有標點符號以及一些符號。

非列印字元

字元 含義
/cx 匹配由x指明的控制字元。例如, /cM 匹配一個 Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字元。
/f 匹配一個換頁符。等價於 /x0c 和 /cL。
/n 匹配一個換行符。等價於 /x0a 和 /cJ。
/r 匹配一個回車符。等價於 /x0d 和 /cM。
/s 匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ /f/n/r/t/v]。
/S 匹配任何非空白字元。等價於 [^ /f/n/r/t/v]。
/t 匹配一個製表符。等價於 /x09 和 /cI。
/v 匹配一個垂直製表符。等價於 /x0b 和 /cK。

特殊字元

所謂特殊字元,就是一些有特殊含義的字元,如上面說的"*.txt"中的*,簡單的說就是表示任何字元串的意思。如果要查找文件名中有*的文件,則需要對*進行轉義,即在其前加一個/。ls /*.txt。正則表達式有以下特殊字元。
特別字元 說明
$ 匹配輸入字元串的結尾位置。如果設置了 RegExp 對象的 Multiline 屬性,則 $ 也匹配 '/n' 或 '/r'。要匹配 $ 字元本身,請使用 /$。
( ) 標記一個子表達式的開始和結束位置。子表達式可以獲取供以後使用。要匹配這些字元,請使用 /( 和 /)。
* 匹配前面的子表達式零次或多次。要匹配 * 字元,請使用 /*。
+ 匹配前面的子表達式一次或多次。要匹配 + 字元,請使用 /+。
. 匹配除換行符 /n之外的任何單字元。要匹配 .,請使用 /。
[ 標記一個中括弧表達式的開始。要匹配 [,請使用 /[。
? 匹配前面的子表達式零次或一次,或指明一個非貪婪限定符。要匹配 ? 字元,請使用 /?。
/ 將下一個字元標記為或特殊字元、或原義字元、或向後引用、或八進制轉義符。例如, 'n' 匹配字元 'n'。'/n' 匹配換行符。序列 '//' 匹配 "/",而 '/(' 則匹配 "("。
^ 匹配輸入字元串的開始位置,除非在方括弧表達式中使用,此時它表示不接受該字元集合。要匹配 ^ 字元本身,請使用 /^。
{ 標記限定符表達式的開始。要匹配 {,請使用 /{。
| 指明兩項之間的一個選擇。要匹配 |,請使用 /|。

構造正則表達式的方法和創建數學表達式的方法一樣。也就是用多種元字元與操作符將小的表達式結合在一起來創建更大的表達式。正則表達式的組件可以是單個的字元、字元集合、字元范圍、字元間的選擇或者所有這些組件的任意組合。

限定符

限定符用來指定正則表達式的一個給定組件必須要出現多少次才能滿足匹配。有*或+或?或{n}或{n,}或{n,m}共6種。
*、+和?限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的後面加上一個?就可以實現非貪婪或最小匹配。
正則表達式的限定符有:
字元 描述
* 匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於{0,}。
+ 匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。
? 匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價於 {0,1}。
{n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
{n,} n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。
{n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價於 'o?'。請注意在逗號和兩個數之間不能有空格。

定位符

用來描述字元串或單詞的邊界,^和$分別指字元串的開始與結束,/b描述單詞的前或後邊界,/B表示非單詞邊界。不能對定位符使用限定符。

選擇

用圓括弧將所有選擇項括起來,相鄰的選擇項之間用|分隔。但用圓括弧會有一個副作用,是相關的匹配會被緩存,此時可用?:放在第一個選項前來消除這種副作用。
其中?:是非捕獲元之一,還有兩個非捕獲元是?=和?!,這兩個還有更多的含義,前者為正向預查,在任何開始匹配圓括弧內的正則表達式模式的位置來匹配搜索字元串,後者為負向預查,在任何開始不匹配該正則表達式模式的位置來匹配搜索字元串。

後向引用

對一個正則表達式模式或部分模式兩邊添加圓括弧將導致相關匹配存儲到一個臨時緩沖區中,所捕獲的每個子匹配都按照在正則表達式模式中從左至右所遇到的內容存儲。存儲子匹配的緩沖區編號從 1 開始,連續編號直至最大 99 個子表達式。每個緩沖區都可以使用 '/n' 訪問,其中 n 為一個標識特定緩沖區的一位或兩位十進制數。
可以使用非捕獲元字元 '?:', '?=', or '?!' 來忽略對相關匹配的保存。

各種操作符的運算優先順序

相同優先順序的從左到右進行運算,不同優先順序的運算先高後低。各種操作符的優先順序從高到低如下:
操作符 描述
/ 轉義符
(), (?:), (?=), [] 圓括弧和方括弧
*, +, ?, {n}, {n,}, {n,m} 限定符
^, $, /anymetacharacter 位置和順序
| 「或」操作

全部符號解釋

字元 描述
/ 將下一個字元標記為一個特殊字元、或一個原義字元、或一個 向後引用、或一個八進制轉義符。例如,'n' 匹配字元 "n"。'/n' 匹配一個換行符。序列 '//' 匹配 "/" 而 "/(" 則匹配 "("。
^ 匹配輸入字元串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '/n' 或 '/r' 之後的位置。
$ 匹配輸入字元串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 '/n' 或 '/r' 之前的位置。
* 匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等價於{0,}。
+ 匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。
? 匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價於 {0,1}。
{n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。
{n,} n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。
{n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價於 'o?'。請注意在逗號和兩個數之間不能有空格。
? 當該字元緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字元串,而默認的貪婪模式則盡可能多的匹配所搜索的字元串。例如,對於字元串 "oooo",'o+?' 將匹配單個 "o",而 'o+' 將匹配所有 'o'。
. 匹配除 "/n" 之外的任何單個字元。要匹配包括 '/n' 在內的任何字元,請使用象 '[./n]' 的模式。
(pattern) 匹配 pattern 並獲取這一匹配。所獲取的匹配可以從產生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中則使用 $0…$9 屬性。要匹配圓括弧字元,請使用 '/(' 或 '/)'。
(?:pattern) 匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以後使用。這在使用 "或" 字元 (|) 來組合一個模式的各個部分是很有用。例如, 'instr(?:y|ies) 就是一個比 'instry|instries' 更簡略的表達式。
(?=pattern) 正向預查,在任何匹配 pattern 的字元串開始處匹配查找字元串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字元之後開始。
(?!pattern) 負向預查,在任何不匹配 pattern 的字元串開始處匹配查找字元串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字元之後開始
x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。
[xyz] 字元集合。匹配所包含的任意一個字元。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz] 負值字元集合。匹配未包含的任意字元。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
[a-z] 字元范圍。匹配指定范圍內的任意字元。例如,'[a-z]' 可以匹配 'a' 到 'z' 范圍內的任意小寫字母字元。
[^a-z] 負值字元范圍。匹配任何不在指定范圍內的任意字元。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范圍內的任意字元。
/b 匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, 'er/b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
/B 匹配非單詞邊界。'er/B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
/cx 匹配由 x 指明的控制字元。例如, /cM 匹配一個 Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字元。
/d 匹配一個數字字元。等價於 [0-9]。
/D 匹配一個非數字字元。等價於 [^0-9]。
/f 匹配一個換頁符。等價於 /x0c 和 /cL。
/n 匹配一個換行符。等價於 /x0a 和 /cJ。
/r 匹配一個回車符。等價於 /x0d 和 /cM。
/s 匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ /f/n/r/t/v]。
/S 匹配任何非空白字元。等價於 [^ /f/n/r/t/v]。
/t 匹配一個製表符。等價於 /x09 和 /cI。
/v 匹配一個垂直製表符。等價於 /x0b 和 /cK。
/w 匹配包括下劃線的任何單詞字元。等價於'[A-Za-z0-9_]'。
/W 匹配任何非單詞字元。等價於 '[^A-Za-z0-9_]'。
/xn 匹配 n,其中 n 為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。例如,'/x41' 匹配 "A"。'/x041' 則等價於 '/x04' & "1"。正則表達式中可以使用 ASCII 編碼。.
/num 匹配 num,其中 num 是一個正整數。對所獲取的匹配的引用。例如,'(.)/1' 匹配兩個連續的相同字元。
/n 標識一個八進制轉義值或一個向後引用。如果 /n 之前至少 n 個獲取的子表達式,則 n 為向後引用。否則,如果 n 為八進制數字 (0-7),則 n 為一個八進制轉義值。
/nm 標識一個八進制轉義值或一個向後引用。如果 /nm 之前至少有 nm 個獲得子表達式,則 nm 為向後引用。如果 /nm 之前至少有 n 個獲取,則 n 為一個後跟文字 m 的向後引用。如果前面的條件都不滿足,若 n 和 m 均為八進制數字 (0-7),則 /nm 將匹配八進制轉義值 nm。
/nml 如果 n 為八進制數字 (0-3),且 m 和 l 均為八進制數字 (0-7),則匹配八進制轉義值 nml。
/un 匹配 n,其中 n 是一個用四個十六進制數字表示的 Unicode 字元。例如, /u00A9 匹配版權符號 (?)。

我又一個正則表達式教程上的東西,粘下來給你看,雖然看著挺多,但是很快能看完。裡面說的已經挺詳細的了,正則表達式其實說簡單很簡單,拿來就用,說復雜也復雜,規則不少,導致應用時變化也很多

Ⅳ vb 根據密碼加密字元串

是隨機數方式,不是md5,一般用也不錯
放到標准模塊里,調用那加密和解密的函數就行了

'加密解密字元串

Option Explicit

' Encipher the text using the pasword.加密
Public Function cipher(ByVal password As String, ByVal from_text As String)
Const MIN_ASC = 32 ' Space.
Const MAX_ASC = 126 ' ~.
Const NUM_ASC = MAX_ASC - MIN_ASC + 1

Dim offset As Long
Dim str_len As Integer
Dim i As Integer
Dim ch As Integer
Dim to_text As String

' Initialize the random number generator.
offset = NumericPassword(password)
Rnd -1
Randomize offset

' Encipher the string.
str_len = Len(from_text)
For i = 1 To str_len
ch = Asc(Mid$(from_text, i, 1))
If ch >= MIN_ASC And ch <= MAX_ASC Then
ch = ch - MIN_ASC
offset = Int((NUM_ASC + 1) * Rnd)
ch = ((ch + offset) Mod NUM_ASC)
ch = ch + MIN_ASC
to_text = to_text & Chr$(ch)
End If
Next i
cipher = to_text
End Function
' Encipher the text using the pasword.解密
Public Function Decipher(ByVal password As String, ByVal from_text As String)
Const MIN_ASC = 32 ' Space.
Const MAX_ASC = 126 ' ~.
Const NUM_ASC = MAX_ASC - MIN_ASC + 1

Dim offset As Long
Dim str_len As Integer
Dim i As Integer
Dim ch As Integer
Dim to_text As String

' Initialize the random number generator.
offset = NumericPassword(password)
Rnd -1
Randomize offset

' Encipher the string.
str_len = Len(from_text)
For i = 1 To str_len
ch = Asc(Mid$(from_text, i, 1))
If ch >= MIN_ASC And ch <= MAX_ASC Then
ch = ch - MIN_ASC
offset = Int((NUM_ASC + 1) * Rnd)
ch = ((ch - offset) Mod NUM_ASC)
If ch < 0 Then ch = ch + NUM_ASC
ch = ch + MIN_ASC
to_text = to_text & Chr$(ch)
End If
Next i
Decipher = to_text
End Function

' Translate a password into an offset value.
Private Function NumericPassword(ByVal password As String) As Long
Dim value As Long
Dim ch As Long
Dim shift1 As Long
Dim shift2 As Long
Dim i As Integer
Dim str_len As Integer

str_len = Len(password)
For i = 1 To str_len
' Add the next letter.
ch = Asc(Mid$(password, i, 1))
value = value Xor (ch * 2 ^ shift1)
value = value Xor (ch * 2 ^ shift2)

' Change the shift offsets.
shift1 = (shift1 + 7) Mod 19
shift2 = (shift2 + 13) Mod 23
Next i
NumericPassword = value
End Function

Ⅳ VB的正則表達式

我今天問了一個同樣的問題。···得到的一個回答:字元 描述 \ 將下一個字元標記為一個特殊字元、或一個原義字元、或一個 後向引用、或一個八進制轉義符。例如,'n' 匹配字元 "n"。'\n' 匹配一個換行符。序列 '\\' 匹配 "\" 而 "\(" 則匹配 "("。 ^ 匹配輸入字元串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配 '\n' 或 '\r' 之後的位置。 $ 匹配輸入字元串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配 '\n' 或 '\r' 之前的位置。 * 匹配前面的子表達式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。 * 等價於{0,}。 + 匹配前面的子表達式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等價於 {1,}。 ? 匹配前面的子表達式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等價於 {0,1}。 {n} n 是一個非負整數。匹配確定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o。 {n,} n 是一個非負整數。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等價於 'o+'。'o{0,}' 則等價於 'o*'。 {n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。劉, "o{1,3}" 將匹配 "fooooood" 中的前三個 o。'o{0,1}' 等價於 'o?'。請注意在逗號和兩個數之間不能有空格。 ? 當該字元緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字元串,而默認的貪婪模式則盡可能多的匹配所搜索的字元串。例如,對於字元串 "oooo",'o+?' 將匹配單個 "o",而 'o+' 將匹配所有 'o'。 . 匹配除 "\n" 之外的任何單個字元。要匹配包括 '\n' 在內的任何字元,請使用象 '[.\n]' 的模式。 (pattern) 匹配pattern 並獲取這一匹配。所獲取的匹配可以從產生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中則使用 $0…$9 屬性。要匹配圓括弧字元,請使用 '\(' 或 '\)'。 (?:pattern) 匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以後使用。這在使用 "或" 字元 (|) 來組合一個模式的各個部分是很有用。例如, 'instr(?:y|ies) 就是一個比 'instry|instries' 更簡略的表達式。 (?=pattern) 正向預查,在任何匹配 pattern 的字元串開始處匹配查找字元串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如, 'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字元之後開始。 (?!pattern) 負向預查,在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字元串開始處匹配查找字元串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。預查不消耗字元,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字元之後開始 x|y 匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 則匹配 "zood" 或 "food"。 [xyz] 字元集合。匹配所包含的任意一個字元。例如, '[abc]' 可以匹配 "plain" 中的 'a'。 [^xyz] 負值字元集合。匹配未包含的任意字元。例如, '[^abc]' 可以匹配 "plain" 中的'p'。 [a-z] 字元范圍。匹配指定范圍內的任意字元。例如,'[a-z]' 可以匹配 'a' 到 'z' 范圍內的任意小寫字母字元。 [^a-z] 負值字元范圍。匹配任何不在指定范圍內的任意字元。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范圍內的任意字元。 \b 匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。 \B 匹配非單詞邊界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。 \cx 匹配由x指明的控制字元。例如, \cM 匹配一個 Control-M 或回車符。 x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字元。 \d 匹配一個數字字元。等價於 [0-9]。 \D 匹配一個非數字字元。等價於 [^0-9]。 \f 匹配一個換頁符。等價於 \x0c 和 \cL。 \n 匹配一個換行符。等價於 \x0a 和 \cJ。 \r 匹配一個回車符。等價於 \x0d 和 \cM。 \s 匹配任何空白字元,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。 \S 匹配任何非空白字元。等價於 [^ \f\n\r\t\v]。 \t 匹配一個製表符。等價於 \x09 和 \cI。 \v 匹配一個垂直製表符。等價於 \x0b 和 \cK。 \w 匹配包括下劃線的任何單詞字元。等價於'[A-Za-z0-9_]'。 \W 匹配任何非單詞字元。等價於 '[^A-Za-z0-9_]'。 \xn 匹配 n,其中 n 為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。例如, '\x41' 匹配 "A"。'\x041' 則等價於 '\x04' & "1"。正則表達式中可以使用 ASCII 編碼。. \num 匹配 num,其中 num 是一個正整數。對所獲取的匹配的引用。例如,'(.)\1' 匹配兩個連續的相同字元。 \n 標識一個八進制轉義值或一個後向引用。如果 \n 之前至少 n 個獲取的子表達式,則 n 為後向引用。否則,如果 n 為八進制數字 (0-7),則 n 為一個八進制轉義值。 \nm 標識一個八進制轉義值或一個後向引用。如果 \nm 之前至少有is preceded by at least nm 個獲取得子表達式,則 nm 為後向引用。如果 \nm 之前至少有 n 個獲取,則 n 為一個後跟文字 m 的後向引用。如果前面的條件都不滿足,若 n 和 m 均為八進制數字 (0-7),則 \nm 將匹配八進制轉義值 nm。 \nml 如果 n 為八進制數字 (0-3),且 m 和 l 均為八進制數字 (0-7),則匹配八進制轉義值 nml。 \un 匹配 n,其中 n 是一個用四個十六進制數字表示的 Unicode 字元。例如, \u00A9 匹配版權符號 (?)。 優先權順序 在構造正則表達式之後,就可以象數學表達式一樣來求值,也就是說,可以從左至右並按照一個優先權順序來求值。 下表從最高優先順序到最低優先順序列出各種正則表達式操作符的優先權順序: 操作符 描述 \ 轉義符 (), (?:), (?=), [] 圓括弧和方括弧 *, +, ?, {n}, {n,}, {n,m} 限定符 ^, $, \anymetacharacter 位置和順序 | 「或"

Ⅵ utf8 中 有佔4位元組的中文字元嗎

下面的內容轉自我的網路空間,是我收集來的,在這里看起來如果覺得排版不好,可以直接看我的空間內的文章:http://hi..com/newkedison/blog/item/1c7d2c392cc192f63b87ce12.html

有關UTF-8的一些資料2008年06月13日 星期五 08:17一, 最重要的,UTF-8和Unicode的轉換

UTF-8 編碼是一種被廣泛應用的編碼,這種編碼致力於把全球的語言納入一個統一的編碼,目前已經將幾種亞洲語言納入。UTF 代表 UCS Transformation Format.

UTF-8 採用變長度位元組來表示字元,理論上最多可以到 6 個位元組長度。UTF-8 編碼兼容了 ASC II(0-127), 也就是說 UTF-8 對於 ASC II 字元的編碼是和 ASC II 一樣的。對於超過一個位元組長度的字元,才用以下編碼規范:

左邊第一個位元組1的個數表示這個字元編碼位元組的位數,例如兩位位元組字元編碼樣式為為:110xxxxx 10xxxxxx; 三位位元組字元的編碼樣式為:1110xxxx 10xxxxxx 10xxxxxx.;以此類推,六位位元組字元的編碼樣式為:1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx。 xxx 的值由字元編碼的二進製表示的位填入。只用最短的那個足夠表達一個字元編碼的多位元組串。例如:

Unicode 字元: 00 A9(版權符號) = 1010 1001, UTF-8 編碼為:11000010 10101001 = 0x C2 0xA9; 字元 22 60 (不等於符號) = 0010 0010 0110 0000, UTF-8 編碼為:11100010 10001001 10100000 = 0xE2 0x89 0xA0

以上轉換例子已經確認是正確的,不用懷疑,如果看不懂請再仔細想想

Unicode編碼和utf-8編碼之間的對應關系表
The table below summarizes the format of these different octet types.
The letter x indicates bits available for encoding bits of the
character number.

Char. number range | UTF-8 octet sequence
(hexadecimal) | (binary)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx //////A/////////
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
這是一個Unicode編碼和utf-8編碼之間的對應關系表。中文的Unicode編碼范圍在0000 0800-0000 FFFF 中。

二, 關於BOM

UTF-8以位元組為編碼單元,沒有位元組序的問題。UTF-16以兩個位元組為編碼單元,在解釋一個UTF-16文本前,首先要弄清楚每個編碼單元的位元組序。例如收到一個「奎」的Unicode編碼是594E,「乙」的Unicode編碼是4E59。如果我們收到UTF-16位元組流「594E」,那麼這是「奎」還是「乙」?

Unicode規范中推薦的標記位元組順序的方法是BOM。BOM不是「Bill Of Material」的BOM表,而是Byte Order Mark。BOM是一個有點小聰明的想法:

在UCS編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字元,它的編碼是FEFF。而FFFE在UCS中是不存在的字元,所以不應該出現在實際傳輸中。UCS規范建議我們在傳輸位元組流前,先傳輸字元"ZERO WIDTH NO-BREAK SPACE"。

這樣如果接收者收到FEFF,就表明這個位元組流是Big-Endian的;如果收到FFFE,就表明這個位元組流是Little-Endian的。因此字元"ZERO WIDTH NO-BREAK SPACE"又被稱作BOM。

UTF-8不需要BOM來表明位元組順序,但可以用BOM來表明編碼方式。字元"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF(讀者可以用我們前面介紹的編碼方法驗證一下)。所以如果接收者收到以EF BB BF開頭的位元組流,就知道這是UTF-8編碼了。

三, VB實現UTF-8轉Unicode的函數

1.不使用API

Function Utf8ToUnicode(ByRef Utf() As Byte) As String
Dim utfLen As Long

utfLen = -1
On Error Resume Next
utfLen = UBound(Utf)
If utfLen = -1 Then Exit Function

On Error GoTo 0

Dim i As Long, j As Long, k As Long, N As Long
Dim B As Byte, cnt As Byte
Dim Buf() As String
ReDim Buf(utfLen)

i = 0
j = 0
Do While i <= utfLen
B = Utf(i)

If (B And &HFC) = &HFC Then
cnt = 6
ElseIf (B And &HF8) = &HF8 Then
cnt = 5
ElseIf (B And &HF0) = &HF0 Then
cnt = 4
ElseIf (B And &HE0) = &HE0 Then
cnt = 3
ElseIf (B And &HC0) = &HC0 Then
cnt = 2
Else
cnt = 1
End If

If i + cnt - 1 > utfLen Then
Buf(j) = "?"
Exit Do
End If

Select Case cnt
Case 2
N = B And &H1F
Case 3
N = B And &HF
Case 4
N = B And &H7
Case 5
N = B And &H3
Case 6
N = B And &H1
Case Else
Buf(j) = Chr(B)
GoTo Continued:
End Select

For k = 1 To cnt - 1
B = Utf(i + k)
N = N * &H40 + (B And &H3F)
Next

Buf(j) = ChrW(N)
Continued:
i = i + cnt
j = j + 1
Loop

Utf8ToUnicode = Join(Buf, "")
End Function

2. 使用API (包括Unicode轉UTF-8)

Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Const CP_UTF8 = 65001

Function Utf8ToUnicode(ByRef Utf() As Byte) As String
Dim lRet As Long
Dim lLength As Long
Dim lBufferSize As Long
lLength = UBound(Utf) - LBound(Utf) + 1
If lLength <= 0 Then Exit Function
lBufferSize = lLength * 2
Utf8ToUnicode = String$(lBufferSize, Chr(0))
lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(Utf(0)), lLength, StrPtr(Utf8ToUnicode), lBufferSize)
If lRet <> 0 Then
Utf8ToUnicode = Left(Utf8ToUnicode, lRet)
End If
End Function

Function UnicodeToUtf8(ByVal UCS As String) As Byte()
Dim lLength As Long
Dim lBufferSize As Long
Dim lResult As Long
Dim abUTF8() As Byte
lLength = Len(UCS)
If lLength = 0 Then Exit Function
lBufferSize = lLength * 3 + 1
ReDim abUTF8(lBufferSize - 1)
lResult = WideCharToMultiByte(CP_UTF8, 0, StrPtr(UCS), lLength, abUTF8(0), lBufferSize, vbNullString, 0)
If lResult <> 0 Then
lResult = lResult - 1
ReDim Preserve abUTF8(lResult)
UnicodeToUtf8 = abUTF8
End If
End Function

Private Sub Command1_Click()
Dim byt() As Byte
byt = UnicodeToUtf8("測試")
Debug.Print Hex(byt(0)) & Hex(byt(1)) & Hex(byt(2))
Debug.Print Utf8ToUnicode(byt())
End Sub

參考資料:http://hi..com/newkedison/blog/item/1c7d2c392cc192f63b87ce12.html

Ⅶ 怎麼在VB中插入版權符號和其他特殊符號

版權符號用圖片吧
加入FLASH,首先你需要安裝FLASH PLAYER,然後運行VB,添加部件Shockwav Flash就可以了
FLASH控制項的常用屬性方法:
.movie屬性設置FLASH的地址
.play()播放FLASH
.stop()停止播放
.gotoframe()跳到幀數
.t開頭的,對組件進行操作
剩下的自己研究吧

Ⅷ vb uft-8轉gb2312

下面的內容轉自我的網路空間,是我收集來的,在這里看起來如果覺得排版不好,可以直接看我的空間內的文章:http://hi..com/newkedison/blog/item/1c7d2c392cc192f63b87ce12.html

有關UTF-8的一些資料2008年06月13日 星期五 08:17一, 最重要的,UTF-8和Unicode的轉換

UTF-8 編碼是一種被廣泛應用的編碼,這種編碼致力於把全球的語言納入一個統一的編碼,目前已經將幾種亞洲語言納入。UTF 代表 UCS Transformation Format.

UTF-8 採用變長度位元組來表示字元,理論上最多可以到 6 個位元組長度。UTF-8 編碼兼容了 ASC II(0-127), 也就是說 UTF-8 對於 ASC II 字元的編碼是和 ASC II 一樣的。對於超過一個位元組長度的字元,才用以下編碼規范:

左邊第一個位元組1的個數表示這個字元編碼位元組的位數,例如兩位位元組字元編碼樣式為為:110xxxxx 10xxxxxx; 三位位元組字元的編碼樣式為:1110xxxx 10xxxxxx 10xxxxxx.;以此類推,六位位元組字元的編碼樣式為:1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx。 xxx 的值由字元編碼的二進製表示的位填入。只用最短的那個足夠表達一個字元編碼的多位元組串。例如:

Unicode 字元: 00 A9(版權符號) = 1010 1001, UTF-8 編碼為:11000010 10101001 = 0x C2 0xA9; 字元 22 60 (不等於符號) = 0010 0010 0110 0000, UTF-8 編碼為:11100010 10001001 10100000 = 0xE2 0x89 0xA0

以上轉換例子已經確認是正確的,不用懷疑,如果看不懂請再仔細想想

Unicode編碼和utf-8編碼之間的對應關系表
The table below summarizes the format of these different octet types.
The letter x indicates bits available for encoding bits of the
character number.

Char. number range | UTF-8 octet sequence
(hexadecimal) | (binary)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx //////A/////////
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
這是一個Unicode編碼和utf-8編碼之間的對應關系表。中文的Unicode編碼范圍在0000 0800-0000 FFFF 中。

二, 關於BOM

UTF-8以位元組為編碼單元,沒有位元組序的問題。UTF-16以兩個位元組為編碼單元,在解釋一個UTF-16文本前,首先要弄清楚每個編碼單元的位元組序。例如收到一個「奎」的Unicode編碼是594E,「乙」的Unicode編碼是4E59。如果我們收到UTF-16位元組流「594E」,那麼這是「奎」還是「乙」?

Unicode規范中推薦的標記位元組順序的方法是BOM。BOM不是「Bill Of Material」的BOM表,而是Byte Order Mark。BOM是一個有點小聰明的想法:

在UCS編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字元,它的編碼是FEFF。而FFFE在UCS中是不存在的字元,所以不應該出現在實際傳輸中。UCS規范建議我們在傳輸位元組流前,先傳輸字元"ZERO WIDTH NO-BREAK SPACE"。

這樣如果接收者收到FEFF,就表明這個位元組流是Big-Endian的;如果收到FFFE,就表明這個位元組流是Little-Endian的。因此字元"ZERO WIDTH NO-BREAK SPACE"又被稱作BOM。

UTF-8不需要BOM來表明位元組順序,但可以用BOM來表明編碼方式。字元"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF(讀者可以用我們前面介紹的編碼方法驗證一下)。所以如果接收者收到以EF BB BF開頭的位元組流,就知道這是UTF-8編碼了。

三, VB實現UTF-8轉Unicode的函數

1.不使用API

Function Utf8ToUnicode(ByRef Utf() As Byte) As String
Dim utfLen As Long

utfLen = -1
On Error Resume Next
utfLen = UBound(Utf)
If utfLen = -1 Then Exit Function

On Error GoTo 0

Dim i As Long, j As Long, k As Long, N As Long
Dim B As Byte, cnt As Byte
Dim Buf() As String
ReDim Buf(utfLen)

i = 0
j = 0
Do While i <= utfLen
B = Utf(i)

If (B And &HFC) = &HFC Then
cnt = 6
ElseIf (B And &HF8) = &HF8 Then
cnt = 5
ElseIf (B And &HF0) = &HF0 Then
cnt = 4
ElseIf (B And &HE0) = &HE0 Then
cnt = 3
ElseIf (B And &HC0) = &HC0 Then
cnt = 2
Else
cnt = 1
End If

If i + cnt - 1 > utfLen Then
Buf(j) = "?"
Exit Do
End If

Select Case cnt
Case 2
N = B And &H1F
Case 3
N = B And &HF
Case 4
N = B And &H7
Case 5
N = B And &H3
Case 6
N = B And &H1
Case Else
Buf(j) = Chr(B)
GoTo Continued:
End Select

For k = 1 To cnt - 1
B = Utf(i + k)
N = N * &H40 + (B And &H3F)
Next

Buf(j) = ChrW(N)
Continued:
i = i + cnt
j = j + 1
Loop

Utf8ToUnicode = Join(Buf, "")
End Function

2. 使用API (包括Unicode轉UTF-8)

Private Declare Function WideCharToMultiByte Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long, ByRef lpMultiByteStr As Any, ByVal cchMultiByte As Long, ByVal lpDefaultChar As String, ByVal lpUsedDefaultChar As Long) As Long
Private Declare Function MultiByteToWideChar Lib "kernel32" (ByVal CodePage As Long, ByVal dwFlags As Long, ByVal lpMultiByteStr As Long, ByVal cchMultiByte As Long, ByVal lpWideCharStr As Long, ByVal cchWideChar As Long) As Long
Private Const CP_UTF8 = 65001

Function Utf8ToUnicode(ByRef Utf() As Byte) As String
Dim lRet As Long
Dim lLength As Long
Dim lBufferSize As Long
lLength = UBound(Utf) - LBound(Utf) + 1
If lLength <= 0 Then Exit Function
lBufferSize = lLength * 2
Utf8ToUnicode = String$(lBufferSize, Chr(0))
lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(Utf(0)), lLength, StrPtr(Utf8ToUnicode), lBufferSize)
If lRet <> 0 Then
Utf8ToUnicode = Left(Utf8ToUnicode, lRet)
End If
End Function

Function UnicodeToUtf8(ByVal UCS As String) As Byte()
Dim lLength As Long
Dim lBufferSize As Long
Dim lResult As Long
Dim abUTF8() As Byte
lLength = Len(UCS)
If lLength = 0 Then Exit Function
lBufferSize = lLength * 3 + 1
ReDim abUTF8(lBufferSize - 1)
lResult = WideCharToMultiByte(CP_UTF8, 0, StrPtr(UCS), lLength, abUTF8(0), lBufferSize, vbNullString, 0)
If lResult <> 0 Then
lResult = lResult - 1
ReDim Preserve abUTF8(lResult)
UnicodeToUtf8 = abUTF8
End If
End Function

Private Sub Command1_Click()
Dim byt() As Byte
byt = UnicodeToUtf8("測試")
Debug.Print Hex(byt(0)) & Hex(byt(1)) & Hex(byt(2))
Debug.Print Utf8ToUnicode(byt())
End Sub

Ⅸ 用VB編寫一個計算器程序的代碼

1、創建控制項組的方法
首先創建一個命令按鈕,調整其大小(覺得合適就行),名稱為Command1,Caption 屬性為數字 0 ;然後進行「復制」和「粘貼」,當選擇「粘貼」時,出現對話框提示已有一個同名控制項,詢問是否創建控制項組,選擇「是」後,即創建了一個名為「Command」的控制項組。

這時,第一個按鈕的Index屬性值默認為「0」,第二個的Index屬性值自動設為「1」,並且大小與第一個按鈕相同,只需修改其 Caption 屬性為數字「1」並將其拖至合適位置即可。此後繼續使用「粘貼」的方法建立其他控制項組中其餘按鈕,共20個按鈕,每建立一個,就將它拖到合適處,並修改相應的Caption屬性值。

2、各控制項組其屬性設置如下:

二、編寫代碼

Dim s1 As Single, s2 As Single, ysf As String

『定義兩個單精度數變數用與存放參與運算的數,一個字元型存放運算符

Private Sub Command1_Click(Index As Integer)

Text1.Text = Text1.Text & Command1(Index).Caption 』將command1的單擊事件與文本框顯示的內容連接

End Sub

Private Sub Command2_Click()

Text1.Text = Text1.Text + 「。」

If (InStr(Text1.Text, 「。」) = 1) Then 『第一位不能為小數

Text1.Text = 「」

End If

If InStr(Text1.Text, 「。」) 《 Len(Text1.Text) Then 』防止出現兩個小數點

Text1.Text = Left

(Text1.Text, Len(Text1.Text) - 1)

End If

End Sub

Private Sub

Command3_Click()

s2 = Val(Text1.Text) 『開始加減乘除運算

Select Case ysf Case 「+」

Text1.Text = s1 + s2

Case 「-」

Text1.Text = s1 - s2

Case 「*」

Text1.Text = s1 * s2

Case 「/」

If s2 = 0 Then

MsgBox 「分母不能為零!」

Text1.Text = 「」

Else

Text1.Text = s1 / s2 End If End Select

Text1 = IIf(Left(Text1.Text, 1) = 「。」, 0 & Text1.Text, Text1.Text) 『

這個很關鍵,如果沒有這個的話,得出小於1的小數前面沒有0

End Sub

Private Sub Command4_Click()

If Text1.Text = 「」 Then 』文本為空就結束

Exit Sub

End If

Text1.Text = Left(Text1.Text, Len(Text1.Text) - 1) 『文本退一格

End Sub

Private Sub Command5_Click()

Text1.Text = 「」 』清除當前框內文本

End Sub

Private Sub Command6_Click(Index As Integer)

s1 = Val(Text1.Text) 『將s1隱藏起來 ysf = Command6(Index).Caption

Text1.Text = 「」

End Sub

Private Sub Command7_Click()

If Left(Text1.Text, 1) 《》 「-」 Then 』判斷作為負數

Text1.Text = 「-」 & Text1.Text

Else

Text1.Text = Right(Text1.Text, Len(Text1.Text) - 1)

End If

End Sub

Private Sub Command8_Click()

Text1.Text = Text1.Text * Text1.Text 『平方

End Sub

拓展資料

Visual Basic(VB)是由微軟公司開發的包含環境的事件驅動編程語言。它源自於BASIC編程語言。VB擁有圖形用戶界面(GUI)和快速應用程序開發(RAD)系統,可以輕易的使用DAO、RDO、ADO連接資料庫,或者輕松的創建ActiveX控制項。程序員可以輕松地使用VB提供的組件快速創建一個應用程序。

參考鏈Visual Basic——網路接

Ⅹ 代碼 »是什麼意思

源代碼就是源程序
源代碼,是指未編譯的文本代碼。是一系列人類可讀的計算機語言指令。
在現代程序語言中,源代碼可以是以書籍或者磁帶的形式出現,但最為常用的格式是文本文件,這種典型格式的目的是為了編譯出計算機程序。計算機源代碼的最終目的是將人類可讀的文本翻譯成為計算機可以執行的二進制指令,這種過程叫做編譯,通過編譯器完成。
作用
源代碼主要功用有如下2種作用:
生成目標代碼,即計算機可以識別的代碼。
對軟體進行說明,即對軟體的編寫進行說明。為數不少的初學者,甚至少數有經驗的程序員都忽視軟體說明的編寫,因為這部分雖然不會在生成的程序中直接顯示,也不參與編譯。但是說明對軟體的學習、分享、維護和軟體復用都有巨大的好處。因此,書寫軟體說明在業界被認為是能創造優秀程序的良好習慣,一些公司也硬性規定必須書寫。
需要指出的是,源代碼的修改不能改變已經生成的目標代碼。如果需要目標代碼做出相應的修改,必須重新編譯。
代碼組合
源代碼作為軟體的特殊部分,可能被包含在一個或多個文件中。一個程序不必用同一種格式的源代碼書寫。例如,一個程序如果有C語言庫的支持,那麼就可以用C語言;而另一部分為了達到比較高的運行效率,則可以用匯編語言編寫。
較為復雜的軟體,一般需要數十種甚至上百種的源代碼的參與。為了降低種復雜度,必須引入一種可以描述各個源代碼之間聯系,並且如何正確編譯的系統。在這樣的背景下,修訂控制系統(RCS)誕生了,並成為研發者對代碼修訂的必備工具之一。
還有另外一種組合:源代碼的編寫和編譯分別在不同的平台上實現,專業術語叫做軟體移植。
版權
如果按照源代碼類型區分軟體,通常被分為兩類:自由軟體和非自由軟體。自由軟體一般是不僅可以免費得到,而且公開源代碼;相對應地,非自由軟體則是不公開源代碼。所有一切通過非正常手段獲得非自由軟體源代碼的行為都將被視為非法。
質量
對於計算機而言,並不存在真正意義上的「好」的源代碼;然而作為一個人,好的書寫習慣將決定源代碼的好壞。源代碼是否具有可讀性,成為好壞的重要標准。軟體文檔則是表明可讀性的關鍵。
效率
雖然我們可以通過不同的語言來實現計算機的同一功能,但在執行效率上則存在不同。普遍規律是:越高級的語言,其執行效率越低。這也是為什麼匯編語言生成的文件比用VB語言生成文件普遍要小的原因。

至於下面你那些就是惡搞了~一個BOY的戀愛史

閱讀全文

與vb版權符號相關的資料

熱點內容
馬鞍山向山鎮黨委書記 瀏覽:934
服務創造價值疏風 瀏覽:788
工商登記代名協議 瀏覽:866
2015年基本公共衛生服務項目試卷 瀏覽:985
創造營陳卓璇 瀏覽:905
安徽職稱計算機證書查詢 瀏覽:680
衛生院公共衛生服務會議記錄 瀏覽:104
泉州文博知識產權 瀏覽:348
公共衛生服務培訓會議小結 瀏覽:159
馬鞍山攬山別院價格 瀏覽:56
施工索賠有效期 瀏覽:153
矛盾糾紛交辦單 瀏覽:447
2010年公需課知識產權法基礎與實務答案 瀏覽:391
侵權責任法第5556條 瀏覽:369
創造者對吉阿赫利直播 瀏覽:786
中小企業公共服務平台網路 瀏覽:846
深圳市潤之行商標製作有限公司 瀏覽:62
江莉馬鞍山 瀏覽:417
馬鞍山大事件 瀏覽:759
機動車銷售統一發票抵扣期限 瀏覽:451