曾經使用過 lua 裡的regular expression,之後只要是處理到字串,就會想到它。
它的方便容我試給大家看。
itemLink = "|cff1eff00|Hitem:8176:0:0:0:0:0:0:1127223590|h[夜色頭帶]|h|r"
local _,_,itemname=string.find(itemLink,"%[([^]]+)%]")
就可以把 itemLink 裡的中括號裡的文字,放到 itemname 這個變數裡。
真是方便,對吧!
而在其他 language 裡,有一樣的用法嗎?
今天先試,在 java 該怎麼辦呢?
舉例來說:
"CASSETTE1STATE", DT_BYTE, SE_UINTEGER, 1,1
要找到 CASSETTE1STATE DT_BTYE SE_UNITEGER 1 1 這五個東西,該怎麼辦呢?
可以這樣做:
import java.util.regex.*;
oldstring = "\"CASSETTE1STATE\", DT_BYTE, SE_UINTEGER, 1,1";
Pattern TAP_TYPE_Pattern =
Pattern.compile("\"(C.*)\"\\s*,\\s*(\\w*)\\s*,\\s*(\\w*)\\s*,\\s*(\\w*)\\s*,\\s*(\\w*)\\s*");
Matcher matcher = TAP_TYPE_Pattern.matcher(oldstring);
String N = "";
while (matcher.find()){
varName = matcher.group();
Macros.message(view,varName);
for (int i = 1 ; i <= matcher.groupCount() ; i++){
N = N + i + " : " + matcher.group(i) + "\n";
}
}
System.out.println(N);
其中,matcher.group() 是整個選到的字。
而 matcher.group(i)就是在表示式裡用()框起來的值。
你看,類似的功能,java 要寫多大一包啊!
全站熱搜
留言列表