字符串隐藏

1.    js判断字符串是中文,英文还是数字
(1)    遍历你要判断的字符串str,用str.charCodeAt(下标),获得每个字符的asc码,然后对照asc码表来判断其所属类型的

计算字符串长度(英文占1个字符,中文汉字占2个字符)

方法一:

String.prototype.gblen = function() {  
  var len = 0;  
  for (var i=0; i<this.length; i++) {  
    if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {  
       len += 2;  
     } else {  
       len ++;  
     }  
   }  
  return len;  
}


方法二:

function strlen(str){
    var len = 0;
    for (var i=0; i<str.length; i++) { 
     var c = str.charCodeAt(i); 
    //单字节加1 
     if ((c >= 0x0001 && c <= 0x007e) || (0xff60<=c && c<=0xff9f)) { 
       len++; 
     } 
     else { 
      len+=2; 
     } 
    } 
    return len;
}


方法三:

var jmz = {};
jmz.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;
};


方法四:

var l = str.length; 
var blen = 0; 
for(i=0; i<l; i++) { 
if ((str.charCodeAt(i) & 0xff00) != 0) { 
blen ++; 

blen ++; 
}


方法五:
把双字节的替换成两个单字节的然后再获得长度 

getBLen = function(str) {
  if (str == null) return 0;
  if (typeof str != "string"){
    str += "";
  }
  return str.replace(/[^\x00-\xff]/g,"01").length;
}

(2)    用正则表达式

ag: /.*[\u4e00-\u9fa5]+.*$/.test(str)----判断str中是否含有中文
        中文 [\u4E00-\u9FA5]

        英文 [A-Za-z]

        数字 [0-9]

Add:   

if(/.*[\u4e00-\u9fa5]+.*$/.test(map['lastAppName'])){      handleAppName=map['lastAppName'].length>18?map['lastAppName'].substring(0,12)+'...':map['lastAppName']; --含有中文就截取12个

     }else {

 handleAppName=map['lastAppName'].length>18?map['lastAppName'].substring(0,18)+'...':map['lastAppName'];

}

2.    字符串截取

 (1) js

 str.substring(start, end) 
"String Literal".substring(start, end) 

(2) Css   

方法一:

<div style="width:300px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;"> 任意长度的字符串 </div>

说明:优点是内容可以为任何HTML元素,包括超链接和图片等,在IE6中还会在结尾自动显示省略号。缺点是必须指定宽度数值,并且宽度不能是百分数,否则在IE中会被认为是字符总长的百分比。

方法二:

<input type=”text” style=”width:100%; cursor:default; border-width:0; border-style:none; background-color:transparent;” value=”任意长度的字符串” readonly/>

说明:优点是宽度可以设为百分数。但缺点是内容只能为纯文本,不能有超链接等内容。

div.test{

width:20%;

height:14px;

overflow:hidden;

white-space:nowrap;

text-overflow:ellipsis;

text-overflow: ellipsis;/* IE/Safari */

-ms-text-overflow: ellipsis;

-o-text-overflow: ellipsis;/* Opera */

-moz-binding: url("ellipsis.xml#ellipsis");/*FireFox*/

}

关键是text-overflow,其语法如下:

text-overflow:clip | ellipsis

clip:不显示省略标记(...),而是简单的裁切

ellipsis:当对象向内文本溢出时显示省略标记(...)

要注意的是:a.这个属性是IE专用的!不过,却非只有IE可用。该标签虽然没有被乖哦公开支持采纳,但却被很多浏览器的私有属性所包含。text-overflow单独使用是不起作用的,必须有white-space:nowrap;overflow:hidden;这两句的配合方可。前一句的作用是强制在同一行内显示所有文本,直到文本结束或者遭遇br对象;b.超过长度的内容虽然被隐藏(省略)了,但是内容实际所占的宽度还是和被隐藏之前一样(可以在隐藏的内容后加一个span标签紧跟其后,同时position:absolute,此时可以发现span会被挤到好远的地方)

不难看出,用text-overflow的最佳场所不是文章的行文,而是用以单行显示的标题或摘要的列表。

 

语法:

white-space : normal | pre | nowrap

取值:

normal  :  默认值。默认处理方式。文本自动处理换行。假如抵达容器边界内容会转到下一行

pre  :  换行和其他空白字符都将受到保护。这个值需要IE6+或者 !DOCTYPE 声明为 standards-compliant mode 支持。如果 !DOCTYPE 声明没有指定为 standards-compliant mode ,此属性可以使用,但是不会发生作用。结果等同于 normal 。参阅 pre 对象

nowrap  :  强制在同一行内显示所有文本,直到文本结束或者遭遇 br 对象。参阅 noWrap 属性

说明:

设置或检索对象内空格字符的处理方式。

空格字符,像换行,空格,TAB,在HTML文档中默认的是被忽略的。当此属性设置为 normal 或者 nowrap 时,你可以使用不换行空格的命名实体   来添加空格,用 br 元素来添加换行。此属性对你使用文档对象模型(DOM)操作的内容的影响与其对IE显示内容的影响一样。

此属性作用于块对象。

此属性对于 currentStyle 对象而言是只读的。对于其他对象而言是可读写的。

对应的脚本特性为 whiteSpace 。

转载于:https://my.oschina.net/u/3091947/blog/823248

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值