MSN Space、Google Doc 、Google Blog、啪啦資訊科技
Chui-Wen Chiu(Arick)
2007.04.26 建立
Flex 2.0 雖然已經又內建一個 StringUtil 類別,該類別提供一些字串常用的輔助函數,可惜太過於陽春只有下面幾個
1. trim:去除字串前後空白字元
2. trimArrayElements:將字串以指定分隔字元進行分割,並將分割後的字串去除前後空白。
3. isWhitespace:檢查是否為空白字元
4. substitute:格式化輸出,類似 C# 的 String.Format()
目前 Macromedia 釋出一個包在 com.chewtinfoil.utils Package 中的 StringUtils 類別提供更多的字串處理功能,如下:
afterFirst
adterLast
beginsWith
beforeFirst
beforeLast
between
block
capitalize
contains
countof
editDistance
endsWith
hasText
isEmpty
isNumeric
padLeft
padRight
properCase
quote
remove
removeExtraWhiteSpace
reverse
reverseWords
similarity
stripTags
swapCase
trim
trimLeft
trimRight
wordCount
truncate
一個簡單的測試範例
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="358" height="202">
<mx:Script >
<![CDATA[
import com.chewtinfoil.utils.StringUtils;
import mx.controls.Alert;
// 擷取指定字串第一次出現之後的字串
private function btnafterFirst():void{
Alert.show( '-->' + StringUtils.afterFirst("Hello, My Name is Arick", "is ") + '<--');// -->Arick<--
}
// 截去指定字串最後出現以後的字串
private function btnafterLast():void{
Alert.show( '-->' + StringUtils.afterLast("Hello, My Name is Arick", "i") + '<--'); // -->ck<--
}
// 檢驗字串開頭是否符合指定字串
private function btnbeginsWith():void{
Alert.show(StringUtils.beginsWith("Chui-Wen Chiu", "Chui-Wen").toString()); // -->ck<--
}
// 取得從開頭到指定字串第一次出現位址以前的字串
private function btnbeforeFirst():void{
Alert.show('-->'+StringUtils.beforeFirst("Chui-Wen Chiu", "Chiu") + '<--'); // -->Chui-Wen <--
}
// 取得從開頭到指定字串最後一次出現位址以前的字串
private function btnbeforeLast():void{
Alert.show('-->'+StringUtils.beforeLast("Chui-Wen Chiu", "i") + '<--'); // -->Chui-Wen Ch<--
}
// 是否含指定字串
private function btncontains():void{
Alert.show('-->'+StringUtils.contains("Chui-Wen Chiu", "i").toString() + '<--'); // -->true<--
}
// 計算指定字元出現次數
private function countOf():void{
Alert.show('-->'+StringUtils.countOf("Chui-Wen Chiu", "i") + '<--'); // -->2<--
}
// 檢查字串結尾是否符合指定字串
private function endsWith():void{
Alert.show('-->'+StringUtils.endsWith("c:\notepad.exe", ".exe").toString() + '<--'); // -->true<--
}
// 檢查是否為 NULL 或字傳長度為 0
private function isEmpty():void{
Alert.show(StringUtils.isEmpty("Chui-Wen Chiu").toString()); // false
}
// 是否為數值樣式字串
private function isNumeric():void{
Alert.show(StringUtils.isNumeric("12E5").toString() ); // true
}
// 以指定字元填補左側字元達到指定的字串長度
private function padLeft():void{
Alert.show(StringUtils.padLeft(".123", "0", 5) ); // 0.123
}
// 以指定字元填補右側字元達到指定的字串長度
private function padRight():void{
Alert.show(StringUtils.padRight("123.", "0", 6)); // 123.00
}
// 字串開頭大寫,其他字母皆為小寫
private function properCase():void{
Alert.show('-->'+StringUtils.properCase("Chui-Wen Chiu") + '<--'); // -->Chui-wen chiu<--
}
//
private function quote():void{
Alert.show('-->'+StringUtils.quote("Chui-Wen Chiu") + '<--'); // -->"Chui-Wen Chiu"<--
}
// 移除定的字串
private function remove():void{
Alert.show('-->'+StringUtils.remove("Chui-Wen Chiu", "i") + '<--'); // -->Chu-Wen Chu<--
}
// 字串反轉
private function reverse():void{
Alert.show('-->'+StringUtils.reverse("Chui-Wen Chiu") + '<--'); // -->uihC neW-iuhC<--
}
// 以單字為單位反轉
private function reverseWords():void{
Alert.show('-->'+StringUtils.reverseWords("Chui-Wen Chiu") + '<--'); // -->ChiuChui-Wen<--
}
// 移除 < 開頭 > 結尾的字串
private function stripTags():void{
Alert.show('-->'+StringUtils.stripTags("<html><body style = 'color:red'>Chui-Wen Chiu</body></html>") + '<--'); // -->Chui-Wen Ch<--
}
// 大小寫互轉
private function swapCase():void{
Alert.show('-->'+StringUtils.swapCase("Chui-Wen Chiu") + '<--'); // -->chui-Wen Chiu<--
}
// 去除字串前後空白字元
private function trim():void{
Alert.show('-->'+StringUtils.trim(" Chui-Wen Chiu ") + '<--'); // -->Chui-Wen Ch<--
}
// 去除字串左側空白字元
private function trimLeft():void{
Alert.show('-->'+StringUtils.trimLeft(" Chui-Wen Chiu ") + '<--'); // -->Chui-Wen Ch<--
}
// 去除字串右側空白字元
private function trimRight():void{
Alert.show('-->'+StringUtils.trimRight(" Chui-Wen Chiu ") + '<--'); // -->Chui-Wen Ch<--
}
// 計算單字數量
private function wordCount():void{
Alert.show('-->'+StringUtils.wordCount("Hello, My name is Arick.") + '<--'); // -->Chui-Wen Ch<--
}
// 擷取指定長度並加上後綴字
private function truncate():void{
Alert.show('-->'+StringUtils.truncate("Chui-Wen Chiu", 3) + '<--'); // -->Chu...<--
}
]]>
</mx:Script>
<mx:Button x="10" y="10" label="afterFirst" click="btnafterFirst()"/>
<mx:Button x="10" y="30" label="afterLast" click="btnafterLast()"/>
<mx:Button x="10" y="50" label="beginsWith" click="btnbeginsWith()"/>
<mx:Button x="10" y="70" label="beforeFirst" click="btnbeforeFirst()"/>
<mx:Button x="10" y="90" label="beforeLast" click="btnbeforeLast()"/>
<mx:Button x="10" y="130" label="contains" click="btncontains()"/>
<mx:Button x="10" y="150" label="countOf" click="countOf()"/>
<mx:Button x="10" y="110" label="endsWith" click="endsWith()"/>
<mx:Button x="239" y="10" label="isEmpty" click="isEmpty()"/>
<mx:Button x="239" y="30" label="isNumeric" click="isNumeric()"/>
<mx:Button x="239" y="50" label="padLeft" click="padLeft()"/>
<mx:Button x="239" y="70" label="padRight" click="padRight()"/>
<mx:Button x="239" y="90" label="properCase" click="properCase()"/>
<mx:Button x="239" y="110" label="quote" click="quote()"/>
<mx:Button x="239" y="130" label="remove" click="remove()"/>
<mx:Button x="121.5" y="150" label="reverse" click="reverse()"/>
<mx:Button x="121.5" y="170" label="reverseWords" click="reverseWords()"/>
<mx:Button x="121.5" y="10" label="stripTags" click="stripTags()"/>
<mx:Button x="121.5" y="30" label="swapCase" click="swapCase()"/>
<mx:Button x="121.5" y="50" label="trim" click="trim()"/>
<mx:Button x="121.5" y="70" label="trimLeft" click="trimLeft()"/>
<mx:Button x="121.5" y="90" label="trimRight" click="trimRight()"/>
<mx:Button x="121.5" y="110" label="wordCount" click="wordCount()"/>
<mx:Button x="121.5" y="130" label="truncate" click="truncate()"/>
</mx:Application>
補充:
Flex 2.0 使用上述類別可能會有一些警告訊息,你可以忽略不理,或嘗試進行下面的修改:
Line 256:新增var j:uint;
Line 272: 將 var j:uint 改為 j=0
Line 277: 將 var j:uint=1改為j=1
Line 638: 改成 public static function truncate(p_string:String, p_len:uint = 0, p_suffix:String = "..."):String {
Line 640: 改成 if (p_len == 0) { p_len = p_string.length; }
檔案下載:
[1] AS3 String Utils
參考資料:
[1] http://www.gskinner.com/blog/archives/2007/04/free_extension.html