none
將中文文章斷行 RRS feed

  • 問題

  • 目前想嘗試把一個包含網頁原始碼的資料斷行

    例如:
            2009年4月17日 <b>...</b> 我已經試出不少有趣功能,像是<em>PTT</em> 的RSS
    可以往回追溯到2007 年初,所以那些沒被版主備份被淹沒掉的文章,竟然都可以透過Goog
    le Reader 的搜尋功能找 <b>...</b>

    以上這段話應該會被斷成
            年
            月
            日
            我已經試出不少有趣功能
            像是
            的
            回追溯到
            年初
            .....等等

    目前只想到粗糙的做法

      Char[] separators = { 'a', 'b',..... '<', '>'.... };
      String[] r = s.Split(separators);

    就是把所有中間可能的符號加進去,可是這工程太浩大了

    不知道有沒有辦法用正規表示法做到呢?
    還沒學用過正規表示法,找的資料自己試不出來,
    謝謝!

    2010年3月14日 下午 12:53

解答

  • 拆解成 Unicode 或 UTF32的Byte陣列, 再判斷其範圍是否在中文字碼範圍內.
    MSDN 文件庫很重要
    問題本身越具體, 越容易得到大家的回應
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    • 已標示為解答 Lolota Lee 2010年3月22日 上午 10:06
    2010年3月21日 上午 03:42
    版主

所有回覆

  • 這是已經把網頁中的某一部分抓下來囉,
    所以才會剩下這段文章,只是因為抓原始碼的關係,
    所以還會有一些數字,tag,英文等資訊,
    (其實有些文章是中英夾雜)

    但我是希望把它再次處理斷句,
    利用空格,符號,tag,等資訊來斷開

    就如同英文是用空格斷開一下,
    這邊的斷開就是利用除了"中文"以外的"任何"符號,

    2010年3月14日 下午 01:03
  • string test = "abC我是中文def";
    test = Regex.Replace(test, "[a-z]+", text => "\n" + text + "\n", RegexOptions.IgnoreCase);

    不知道有沒有誤解你的意思.........
    2010年3月14日 下午 01:20
  • 可能描述不清楚

    例如

    string test = "abC1234我是中文<tag>中文.是のトエリア我def";

    這樣的句子要回傳看是陣列或是List ? 成 aa={"我是中文","中文","是","我"}

    2010年3月21日 上午 03:06
  • 拆解成 Unicode 或 UTF32的Byte陣列, 再判斷其範圍是否在中文字碼範圍內.
    MSDN 文件庫很重要
    問題本身越具體, 越容易得到大家的回應
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    • 已標示為解答 Lolota Lee 2010年3月22日 上午 10:06
    2010年3月21日 上午 03:42
    版主