1. 程式人生 > >GBString 一個可以識別GB18030編碼的字串ruby類

GBString 一個可以識別GB18030編碼的字串ruby類

GBString是一個可以識別GB18030編碼的ruby字串類,它改寫了String類的一些方法,可以很方便地處理內碼是GB18030/GBK/GB2312的字串。

專案的homepage
http://rubyforge.org/projects/gbstring/

License
====================
GBString, a ruby class simliar to String class but with GB18030 encoding aware style.

Copyright (C) <2007>  <Bob Yang>

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Email: bob.yang.dev at gmail.com
====================

一、快速開始
====================
1、構造一個GBString物件
require "g_b_string"
gbstr = GBString.new("這是一個GB18030編碼的字串!") # 注意,檔案的編碼方式要是GB18030

或者使用下面的簡單方式

gbstr = _c("這也是一個GB18303編碼的字串!")

2、按中文字元為基本單位計算字串長度
gbstr = _c("中文串")
puts( gbstr.size ) # => 3 而不是 6

3、遍歷中文字串
_c("中文串abc").each do |char|
  puts char
end
# => 中
# => 文
# => 串
# => a
# => b
# => c

二、更多用法
====================
可以參考 test/tc_g_b_string.rb

1、each, each_with_index
  每個元素是一箇中文字元,型別為String.

2、split

  cstr = _c"第一 第二  第三"
  tokens = cstr.split(" ")
  tokens[0] # => 第一
  tokens[1] # => 第二
  tokens[3] # => 第三

3、下標操作符'[ ]', 注意得到的物件是GBString型別的

  cstr = _c"甲A"
  puts( cstr[0] ) # => 甲
  puts( cstr[1] ) # => A
  puts( cstr[0].class ) # => GBString
  puts( cstr[1].class ) # => GBString
  
4、型別轉換,to_a, range
  # 轉換到陣列, to_a
  gbstr = _c("型別map")
  array = gbstr.to_a
  puts array.size # => 5
  puts array[0]   # => 類
  puts array[3]   # => a
  
  # 作為range使用, 得到的物件是GBString類的
  gbstr = _c"This is a /"中文字串/"!"
  puts( gbstr[10..16] )   # => "中文字串"
  puts( gbstr[-8..-1] )   # => "中文字串"!
  puts( gbstr[10, 7] )    # => "中文字串"
  
5、作為Hash的key使用, 與相同內容的String物件相等.
  hash = {_c("中國")=>1, _c("貴州省")=>2, _c("貴陽市")=>3}
  puts( hash[_c("貴陽市")] )   # => 3
  puts( hash["貴陽市"] )       # => 3
  
三、執行單元測試
====================
進入 test 目錄,執行 ruby tc_g_b_string.rb 即可。
如果一切正常,會提示:
7 tests, 56 assertions, 0 failures, 0 errors  

相關推薦

GBString 一個可以識別GB18030編碼字串ruby

GBString是一個可以識別GB18030編碼的ruby字串類,它改寫了String類的一些方法,可以很方便地處理內碼是GB18030/GBK/GB2312的字串。 專案的homepagehttp://rubyforge.org/projects/gbstring/ License ============

一個實用的java字串工具(擷取,去尾,轉碼)

package com.xx.sisp.iface.common.util; import org.apache.commons.lang3.StringUtils; import java.io.UnsupportedEncodingException;

所有的字符編碼由System.Text.Encoding獲取所有的字符編碼如Unicode編碼GB18030編碼、(UTF-8) 簡體中文(GB2312)

mac net 挪威 head sun -m abi cal 篩選 本頁列出來目前window下所有支持的字符編碼 ---通過 System.Text.Encoding.GetEncodings()獲取,裏面可以對其進行查詢,篩選,對同一個字符,在不同編碼進行查看和分

【spring cloud】匯入一個新的spring boot專案作為spring cloud的一個子模組微服務,怎麼做/或者 每次匯入一個新的spring boot專案,IDEA不識別子module,啟動無法啟動/右下角沒有藍色圖示

如題:匯入一個新的spring boot專案作為spring cloud的一個子模組微服務,怎麼做 或者說每次匯入一個新的spring boot專案,IDEA不識別,啟動類無法啟動,怎麼解決 下面一起來走一遍這個流程: 1.將一個spring boot服務匯入spring cloud中作為一個子模組

獲取一個臨時文件和對中文文件名字進行編碼的工具

臨時工 進行 fff ima odi fileutil sta 先生 java      首先我們明白,一個文件可以命名為任何名稱,比如一個excel,我們可以命名為不帶後綴,然後向裏面寫入對應的內容,只是在導出的時候將文件命名為正確的名字即可。   一個在當前用

獲取一個臨時檔案和對中文檔名字進行編碼的工具

     首先我們明白,一個檔案可以命名為任何名稱,比如一個excel,我們可以命名為不帶字尾,然後向裡面寫入對應的內容,只是在匯出的時候將檔案命名為正確的名字即可。     一個在當前使用者的預設臨時資料夾中生成一個當前日期的資料夾,然後再裡面寫入一個用UUID生成名字的檔案,常用於Java

spring註解識別一個介面的多個實現

1.比如有一個介面如下: publicinterface Filter {       public String doFilter(String param);   }   2.有如下介面實現類: publicclass TimeFilter imp

一個安卓開發中常用的字串工具

public class StringUtils { private StringUtils() { throw new AssertionError(); } /** * 密碼 * * @param

工具一個位元組流轉成字串

public class StringUtil {  /**      * 把一個位元組流轉成字串      *      * @param inputStream      * @param charset      * @return      */     publi

php中按位元組擷取字串方法,(漢字佔兩個位元組,字母佔一個位元組,頁面編碼必須為utf-8)

function esub($str, $length = 0) { if($length < 1){ return $str; } //計算字串長度 $strlen = (strlen($str) + mb_str

用C++設計一個不能被繼承的(轉)

它的 設計 指定 基於 構造 重寫 rtu 構造函數、析構函數 析構函數 在Java 中定義了關鍵字final,被final修飾的類不能被繼承。 首先想到的是在C++中,子類的構造函數會自動調用父類的構造函數。同樣,子類的析構函數也會自動調用父類的析構函數。要想一個類不能

一個字符串(string型)轉換成一個int

string_to_inint CommString::str_to_int(const std::string &str){ int ivalue = 0; sscanf(str.c_str(), "%d", &ivalue); return ivalue;}本文出自 “簡單可

搜藏一個php文件上傳

cti fault bre 單元素 出錯 構造 php文件 tmp log <?php /** * 上傳文件類 * @param _path : 服務器文件存放路徑 * @param _allowType : 允許上傳的文件類型和所對應的MIME * @pa

建立一個漂亮的PHP驗證碼文件及調用方式

去掉 -1 cti elephant orm random 上一個 ott 狀態 //驗證碼類class ValidateCode { private $charset = ‘abcdefghkmnprstuvwxyzABCDEFGHKMNPRSTUVWXYZ2345678

Python——property(使一個方法看起來就像屬性一樣)

一定要註意了 函數返回 exce 函數 蘋果 調用 prop 存在 ice """ 裝飾器property: 使一個方法看起來就像類屬性一樣 """ #例子1 class A: def __ini

ruby 庫組成

分布式 測試 rda 獲取 img api thread windows wait 一. 核心類庫: 二.標準類庫: 文本  base64.rb 處理Base64編碼的模塊 csv.rb CSV(Comma Separated Values)庫 r

eclipse查看一個接口的所有實現

選中 fill 查看 clip blog nvm 一個 text 關系 選中接口類型名字,右鍵菜單,如圖 然後會出來一個類關系樹形圖,如圖 *註意此處會根據接口的實現情況來展開eclipse查看一個接口的所有實現類

180705-一個簡單的冪等工具實現

scheduled check final https 內存問題 fault 可能 使用 關系 一個簡單的冪等工具類 在日常的工作中,業務的去重冪等場景屬於比較常見的需求,一般來講簡單的冪等工具類可以基於內存或者基於redis進行,本篇簡單介紹下,如何使用Guava的緩存

python 一個.py文件如何調用另一個.py文件中的和函數

技術分享 https log details com name 如何 mage nbsp 原文地址https://blog.csdn.net/winycg/article/details/78512300 在同一個文件夾下 調用函數: python

如何得到一個接口所有的實現(及子接口)?例如:Eclipse IDE

name 解析 例如 圖片 沒有 選中 java 叠代 interface (一)Eclipse IDE的做法 它會解析所有的Java文件、Class文件。技巧:在Eclipse中,選中Interface,按下F4,就可以查看到所有的實現類及子接口。 例如: (二)自己怎麽