1. 程式人生 > >擷取中文字串的js方法

擷取中文字串的js方法

轉載地址:http://www.cnblogs.com/ztlyz/archive/2009/08/25/1553819.html

有時在顯示某段文字的時候,可能會太長,影響我們頁面的顯示效果。如果僅是英文,那麼我們可以用String.substring(start, end)函式就已經夠用了。但是通常我們都會遇到既有英文,又有漢字的情況。而漢字是佔用2個位元組的,如果用String.substring(start, end)擷取字串的話,會發現漢字擷取後比英文擷取後個數雖然相同,但是長度還是長出去不少(具體要視字元個數來決定)。
為了解決這個問題昨天寫了根據位元組數擷取字串的函式。
具體使用很簡單,跟String.subString(start, end)一樣使用就可。比如:var str = "誒必塞第衣愛撫即"; var str1 = str.subCHStr(2, 2); var str2 = str.subCHString(2, 4); alert(str1 + " == " + str2);

列印結果:

//計算字串長度
String.prototype.strLen = function() {
    var len = 0;
    for (var i = 0; i < this.length; i++) {
        if (this.charCodeAt(i) > 255 || this.charCodeAt(i) < 0) len += 2; else len ++;
    }
    return len;
}
//將字串拆成字元,並存到陣列中
String.prototype.strToChars = function(){
    var chars = new Array();
    for (var i = 0; i < this.length; i++){
        chars[i] = [this.substr(i, 1), this.isCHS(i)];
    }
    String.prototype.charsArray = chars;
    return chars;
}
//判斷某個字元是否是漢字
String.prototype.isCHS = function(i){
    if (this.charCodeAt(i) > 255 || this.charCodeAt(i) < 0)
        return true;
    else
        return false;
}
//擷取字串(從start位元組到end位元組)
String.prototype.subCHString = function(start, end){
    var len = 0;
    var str = "";
    this.strToChars();
    for (var i = 0; i < this.length; i++) {
        if(this.charsArray[i][1])
            len += 2;
        else
            len++;
        if (end < len)
            return str;
        else if (start < len)
            str += this.charsArray[i][0];
    }
    return str;
}
//擷取字串(從start位元組擷取length個位元組)
String.prototype.subCHStr = function(start, length){
    return this.subCHString(start, start + length);
}

相關推薦

擷取中文字串js方法

轉載地址:http://www.cnblogs.com/ztlyz/archive/2009/08/25/1553819.html 有時在顯示某段文字的時候,可能會太長,影響我們頁面的顯示效果。如果僅是英文,那麼我們可以用String.substring(start, en

php擷取中文字串方法

/** * 擷取中文 * @param stirng $string 擷取內容 * @param int $sublen 擷取長度 * @param int $start 開始位置 * @param string $code 編碼方式 * @return stri

IDA pro 6.8顯示中文字串方法

IDA pro 6.8設定顯示中文字串的方法 IDA是一款強大無比的反編譯軟體,但對中文的支援一直都差了一些,這篇博文記錄一下設定strings window和F5後的虛擬碼顯示中文的方法 分兩步進行 找到IDA安裝路徑下的cfg\ida.cfg檔案,記事本開啟,將ida.cfg中c

php中計算中文字串長度、擷取中文字串

header('Content-type:text/html;charset=utf-8');/*** 可以統計中文字串長度的函式* @param $str 要計算長度的字串* @param $type 計算長度型別,0(預設)表示一箇中文算一個字元,1表示一箇中文算兩個字元**/function abs

CString型別中文字串截取出現亂碼的問題/實現中文字串擷取無亂碼的方法

原貼地址 我的方法與他類似,先將cstring轉成寬位元組後再擷取字串 方法原理:cstring下預設字元字母數字等佔一個位元組,而中文佔兩個位元組,轉換成寬位元組後每個單位元組後面會自動填充一個0x00 ,就能和中文一樣保持雙位元組,擷取時保證取得個數為偶數就可以了

js擷取字串方法

<script> var string = "helloworld"; //a:開始擷取的位置 b:擷取的長度 string.substr(a,b); //a:開始擷取的位置 b:結束擷取的位置

js 中文字串的友好擷取

在顯示字串的時候,避免字串過長往往會對字串進行擷取操作,通常會用到js 的 substr 或者 substring方法, 以及 字串的length屬性 對於非中文的字串處理是很簡單的,但是中文字元的 length  屬性值 是1  而不是 2 ,所以處理就不是很友好了。

js字串格式化方法format

/** * 設定字串format函式 * 例子: '{0}{1}.format(5,6)' */ setStringFormat() { String.prototype['format'] = function () { const e = arguments; retu

js中陣列和字串方法總結

一、陣列方法簡單總結為以下幾種   1、原有:     增、刪、改、截、拼、復、排、轉   2、ES5擴充套件:   查、遍歷 增:        前增 var arr = [3,4,5,6,7]; console.log(arr.unshift(

PHP中文處理 中文字串擷取(mb_substr)和獲取中文字串字數

一、中文擷取:mb_substr()  mb_substr( $str, $start, $length, $encoding )  $str,需要截斷的字串  $start,截斷開始處,起始處為0  $length,要擷取的字數  $encodin

JS字串處理方法

eval(string); //解析JSON資料 JSON.parse(string); //QT解析JSON資料 (string).toFixed(number); //四捨五入取值有效位 Math.ceil(number); //大於等於number最小整數 Math.floor

Java實現按位元組長度擷取字串方法

Java實現按位元組長度擷取字串的方法 個人實踐結果:   Web應用程式在瀏覽器中顯示字串時,由於顯示長度的限制,常常需要將字串擷取後再進行顯示。但目前很多流行的語言,如C#、Java內部採用的都是 Unicode 16(UCS2)編碼,在這種編碼中所有的字元都是兩個字

js 操作字串方法

字串分割的一些方法: split ( separator, howmany ) 方法 第一個引數 separator  字串或正則表示式,從引數指定的地方分割字串 第二個引數 howmany  指定返回的陣列的最大長度 如果設定了該引數,返

a標籤跳頁傳參,以及擷取URL引數 js 中編碼(encode)和解碼(decode)的三種方法

<a href="dd.index?aa=1&&bb=2"></a> //擷取URL引數 // console.log(window.location.search); function GetQueryString(name) { var reg = new Re

JS針對字串方法擴充套件

在前端的開發工作中,我們經常會遇到這樣的情況:從伺服器端獲取到的資料需要進行轉義後才能在頁面上進行展示,在JS中我們可以對字串進行一次擴充套件以便於使用。 /** 字串方法擴充套件 */ ;(function () { var method, stri

C 幾種擷取字串方法 split Substring Replace remove

    Split 方法忽略 separator 的任何值為 Nothing 或空字串 ("") 的元素。 為了在 separator 中的字串具有公共字元的情況下避免出現不明確的結果, Split 操作從例項值的開始進行到結尾,並匹配 separator 中與例項中的分隔符相等的第一個元素。 例項中子字串的

/**擷取字串方法*/

/**擷取字串是方法*/ private List<String> image= new ArrayList<>(); public void sub(String url){ //獲取以“|”為擷取的下標位置 int i = url

java關於使用subList方法擷取字串,放入redis快取的相關問題及解決方法

    在前幾天做專案的時候,會對其他專案通過阿里雲發來的訊息中的某個List型別的欄位進行擷取,並將擷取後的結果存入redis中。但是在專案執行起來的時候,獲取redis中該欄位的內容會出現錯誤,錯誤提示如下: (error) WRONGTYPE Operation a

JS陣列、字串常用方法

陣列: 1.push(): 向陣列尾部新增一個或多個元素,並返回新增新元素後的陣列長度。注意,該方法會改變原陣列。 1 var arr = [1,2,3]; 2 console.log(arr); // [1, 2, 3] 3 var b = arr.pu

mysql擷取字串方法

1、從左開始擷取字串 left(str, length) 說明:left(被擷取欄位,擷取長度) 例:select left(content,200) as abstract from my_content_t 2、從右開始擷取字串 right(s