Blueimp 論壇首頁
  首頁  | 討論區  | 最新話題  | 搜尋  | XML  |  登入

此話題中所有文章數: 4 [ 話題狀態: 一般 ]
上一話題 此文章已經觀看 62 次 而且有 3 篇回應 下一話題
會員大頭照
男寶寶 Moonnight 《護衛隊長》
文章: 716
v3.8.8

過濾掉不要的字元

package test.fin.data;

/**
*
*

Title: 字元處理


*

Description:
*

  • trimChar() 過濾掉不要的字元
    *
  • trimCRLF() 過濾跳行字元
    *


    *

    Copyright: Copyright (c) 2005


    *

    Company:


    * @author S.Y.Hung
    * @version 1.1
    */
    public class StringWorking {

    public StringWorking() {
    }

    /**
    * 過濾掉不要的字元。

    *
  • 適用於 JDK 1.2 以上。
    * @param buffer StringBuffer 暫存用,也可傳 null 進來。
    * @param str String 原始字串
    * @param ch char 要被過濾的字元
    * @return String 過濾後的結果
    * @author S.Y.Hung
    * @version v.1.1
    */
    private String trimChar(StringBuffer buffer,String str,char ch) {
    if ( str == null ) {
    return null;
    }
    if ( str.length() == 0 ) {
    return "";
    }
    if ( buffer == null ) {
    buffer = new StringBuffer(str);
    } else {
    buffer.setLength(0);
    buffer.append(str);
    }
    //
    int indexOfChar = str.indexOf(ch);
    if ( indexOfChar >= 0 ) {
    buffer = buffer.deleteCharAt(indexOfChar);
    }

    String strTemp = buffer.toString();
    if ( strTemp.indexOf(ch) >= 0 ) {
    return this.trimChar(buffer,strTemp,ch);
    } else {
    return buffer.toString();
    }
    }

    /**
    * 過濾跳行字元。

    *
  • 適用於 JDK 1.2 以上。
    * @param str 原始字元。
    * @return 過濾後的字元。
    * @author S.Y.Hung
    * @version v.1.1
    */
    private String trimCRLF(String str) {
    StringBuffer buffer = new StringBuffer();
    str = this.trimChar(buffer,str,'\r');
    str = this.trimChar(buffer,str,'\n');
    return str;
    }

    /*
    public static void main(String[] args) {
    StringWorking test = new StringWorking();
    StringBuffer buffer = new StringBuffer();
    System.out.println(test.trimCRLF("aaaa123456"));
    System.out.println(test.trimCRLF("a\r\naaa123456"));
    System.out.println(test.trimCRLF("aa\raa123456"));
    System.out.println(test.trimCRLF("aaa\na123456"));
    System.out.println(test.trimCRLF("a\r\naaa1\r\n23456"));
    System.out.println(test.trimChar(buffer,"aaaa123456",'a'));
    System.out.println(test.trimChar(buffer,"aaaa123456",'1'));
    }
    //*/
    }

  • ----------------------------------------
    [編輯文章 3 次, 最後修改: Moonnight 於 2005/9/7 上午 10:41:30]

    [2005/7/5 上午 11:22:40]   [返迴此篇文章頂端 ]  回到頂端 
    會員大頭照
    男寶寶 jieh 《騎士團團長》
    文章: 6918
    v3.8.8

    Re: 過濾掉不要的字元

    如果你要過濾的是 char 直覺上我覺得 StringBuffer 不是最好的選擇,應該轉為 char[] 處理,你的程式會更簡潔有力,說不定效能還會提高。

    既然都要用 StringBuffer 我建議與其另外寫一個新方法,不如看看當時我留在耀瑄套件的程式 DataAnalyisi.replace() 的方法,搞不好不用改直接丟空字串進去就可以達到相同的功能,這樣一來可以濾掉的不限於字元,一串字都沒問題。

    因為在等 DVD 燒好無聊上來晃,改天我再證實以上的假設... good luck
    ----------------------------------------
    支持小惡魔
    BTC : 19tn3RnCuwZVukXAwyhDWZD4uBgUZoGJPx
    LTC : LTFa17pSvvoe3aU5jbmfcmEpo1xuGa9XeA
    知識跟八卦一樣,越多人知道越有價值;知識最好的備份方法,散播!
    藍色小惡魔(林永傑): 臉書
    [2005/8/7 上午 12:13:44]   [返迴此篇文章頂端 ]  回到頂端 
    會員大頭照
    男寶寶 Moonnight 《護衛隊長》
    文章: 716
    v3.8.8

    Re: 過濾掉不要的字元

    用 char[] 或許能夠更有效率。

    不過當時因為手邊沒有其他 libs ,
    就考慮用 StringBuffer 。

    可以省掉一些 search 和 remove char 的開發。
    [2005/8/23 下午 12:26:05]   [返迴此篇文章頂端 ]  回到頂端 
    會員大頭照
    男寶寶 jimmy 《一般生》
    文章: 84
    v3.8.8

    Re: 過濾掉不要的字元

    我也做了一個簡單的測試

    public String trimSymbol(String str, char Symbol[]) {
    StringBuilder sb = new StringBuilder();
    sb = sb.append(str);
    int a =Symbol.length;
    int b ;

    for (int k = 0; k < a; k++) {
    b = sb.toString().indexOf(Symbol[k]);
    sb.deleteCharAt(b);
    }
    return sb.toString();
    }

    public static void main(String[] args) {
    trimSymbol t = new trimSymbol();
    char Symbol[] ={',','?'};
    System.out.println(t.trimSymbol("123,2?2",Symbol));
    }
    ----------------------------------------
    熊爸天下名言: 學習要如倒吃甘蔗,將來一定會苦盡甘來
    ----------------------------------------
    [編輯文章 1 次, 最後修改: jimmy 於 2006/6/30 下午 03:10:28]
    [2006/6/30 下午 03:09:14]   [返迴此篇文章頂端 ]  回到頂端