天天看點

javaScript文字截取

開發過程當中,有時會遇到截取問題,主要是文字長度問題。

  要截取的字元串中可能存在空格,可能存在英文,可能存在中文。如果你的字元串是來自富文本那就更有意思了,裡面會存在标簽。

情況多變,如果隻用普通字元串截取的話,就會存在顯示長短不一的情況

例如:

javaScript文字截取

解決這種問題最好的辦法就是,轉義,将空格,特殊字元,或者标簽先轉換。

例如:

一串兒字元中存在标簽:1.前台建立一個隐藏的Text,2然後用js或者背景把你的字元串指派給這個Text,然後讀取這個Text的值,這個時候标簽已經被轉換,你讀取的已經是一個字元串了

剩下的就是中英文轉換來進行截取了

var sub = function (str, n) {
    var r = /[^\x00-\xff]/g;
    if (str.replace(r, "mm").length <= n) { return str; }
    var m = Math.floor(n / 2);
    for (var i = m; i < str.length; i++) {
        if (str.substr(0, i).replace(r, "mm").length >= n) {
            return str.substr(0, i) + "...";
        }
    }
    return str;
}      
var GetLength = function (str) {
    ///<summary>獲得字元串實際長度,中文2,英文1</summary>
    ///<param name="str">要獲得長度的字元串</param>
    var realLength = 0, len = str.length, charCode = -1;
    for (var i = 0; i < len; i++) {
        charCode = str.charCodeAt(i);
        if (charCode >= 0 && charCode <= 128) realLength += 1;
        else realLength += 2;
    }
    return realLength;
};      
function Bind_Icmskoo_Post(CateID) {
    var HtmlAppend = "";
    $("#PostCateId_87").html("");
    var cateidVal = CateID;

    $.ajax({
        type: "get",
        cache: false,
        contentType: "application/json; charset=utf-8",
        url: "PublickAjax.ashx",
        data: { Type: 'Bind_EnterpriseDynamics', r: Math.random(), CateId: cateidVal },
        success: function (data) {

            if (data != null && data != "") {

                var tempdata = eval('(' + data + ')').Table;

                HtmlAppend += " <div role='tabpanel' class='tab-pane active' id=''>";

                HtmlAppend += " <div class='row'>";

                //便利出資料
                $.each(tempdata, function (name, value) {

                    HtmlAppend += "<div class='col-sm-4' οnclick='GovernmentFieldUrl(" + cateidVal + "," + value.PostId + ")'>";
                    HtmlAppend += "<a href='javascript:void(0)' class='tab-c' οnclick='GovernmentFieldUrl(" + cateidVal + "," + value.PostId + ")'>";
                    HtmlAppend += "<figure>";
                    HtmlAppend += "<img src='" + value.Image + "' width='100%' οnclick='GovernmentFieldUrl(" + cateidVal + "," + value.PostId + ")'>";
                    HtmlAppend += "</figure>";

              


                    HtmlAppend += "<div class='tab-txt'  οnclick='GovernmentFieldUrl(" + cateidVal + "," + value.PostId + ")'> ";
                    HtmlAppend += "<p class='tab-tt' οnclick='GovernmentFieldUrl(" + cateidVal + "," + value.PostId + ")'>" + value.PostTitle + "</p>";
                    $("#PostCateId_87Text").html(value.PContent);
                   
                    var PContentVal = $("#PostCateId_87Text").text();

                    if (GetLength(PContentVal) > 100) {
                        PContentVal = sub(PContentVal, 100);

                    }
                    HtmlAppend += "    <p class='tab-article' οnclick='GovernmentFieldUrl(" + cateidVal + "," + value.PostId + ")'>" + PContentVal + "</p>"
                    HtmlAppend += "</div>";
                    HtmlAppend += "</a>";
                    HtmlAppend += "</div>";
                });
                HtmlAppend += " </div></div>";
                $("#PostCateId_87").append(HtmlAppend);
            }
        }
    });
}      

轉載于:https://www.cnblogs.com/daimaozidejiamao/p/7058964.html

繼續閱讀