JavaScript String 对象
来源:互联网 发布:黑客和程序员哪个厉害 编辑:程序博客网 时间:2024/06/08 04:41
手册地址:http://www.w3school.com.cn/jsref/jsref_obj_string.asp
使用常量定义字符串和使用new关键字定义字符的区别?
var str = new String("abc"); //表示创建一个对象, object类型
var str2 = "abc"; //创建一个字符串, string类型
典型问题:
var s1 = "abc"; //栈内存
var s2 = "abc"; //栈内存
var s3 = new String("abc");
var s4 = new String("abc");
s1===s2 //true 不作类型转换
s1===s3 //false
s3===s4 //false
s1==s2 //true
s1==s3 //true
s3==s4 //false; 堆内存当中,两个对象
字符串的常见截取方法
//获取第几个字符
charAt(index)
//获取某个字符的ascii码
charCodeAt(index)
//将ascii码转为字符
String.fromCharCode(97)
//截取部分
substring(start,end)
//分割字符串
split("-")
什么是ascii码?
每个计算机符号所对应的二进制的数字
总共有256个,(全球统一)
在ASCII基础之上扩展出来的更多的符号编码,诞生了字符集,例如:中文编码
ISO-8859-1
GBK
GB2312
为了解决各个国家由于扩展编码不统一的问题(无法交流),发明了unicode
也就是我们现在所使用的utf-8
-8 -16有什么区别??
utf-8相对于utf-16更节省空间
字符集是什么?
在ascii码基础之上扩展出来的符号标准, 不同国家的标准不一样,因此产生了各种各样的字符集
字符串替换(敏感词过滤) replace
replace(要替换的内容, 替换后的内容); //在不使用正则表达式时,无法进行全局替换,
也就是说,只能替换查找到的第一个目标
//使用正则做全局替换
var reg = new RegExp("图片","g"); //第二个参数g ,表示全局Global搜索的意思
str.replace(reg, "<img src='xxxx.jpg'/>");
注: replace()不会对原字符串做任何修改,而是生成新的字符串并返回
高级用法:
"2017&08@08".replace(/(\d+)(\D)/g, function(matched, sub1,sub2, index, str){console.log(matched, sub1, sub2);return sub1+"-";})
$是正则中的简略写法,代表()获取的块,$1~$9
match
console.log() 增加样式
console.log("%c 你好红色微软雅黑","color:red; font-size:20px; font-family:微软雅黑");
ASCII值的应用-------表单验证:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style></style><script>window.onload=function(){var _body=document.getElementById("_body");_body.children[2].onclick=function(){var content=_body.children[1].value;if(!isNaN(content.charAt(0)-0))alert("不能以数字开头 !");else if(content.length<6||content.length>20)alert("注册名的长度为6~20 !!");else{for(var i in content){var char_= content.charCodeAt(i);var isNumber = char_ >= 48 && char_ <= 57;var isLetter = ( char_ >=65 && char_ <=90 ) || ( char_ >=97 && char_ <=122 );var isUnderline= char_ == 95;if( !isNumber && !isLetter && !isUnderline){alert("注册名只能包含数字、字母和下划线");return;}}}}}</script></head> <body id="_body"> <label for="input_">请输入注册名:</label><input id="input_" type="text" /> <input type="button" value="注册" /> </body> </html>
求一个字符串的字节数
//计算一个字符串的字节数function countBytes(str, charset){if(str && charset) {var count = 0;if(charset.toLowerCase() === "gbk"){for(var i=0; i<str.length; i++){var asc = str.charCodeAt(i);if(asc < 256){count+=1;} else {count+=2;}}} else if(charset.toLowerCase() === "utf-16") {for(var i=0; i<str.length; i++){var asc = str.charCodeAt(i);if(asc < 0xFFFF){ //65537count+=2;} else {count+=4;}}} else if(charset.toLowerCase() === "utf-8") {for(var i=0; i<str.length; i++){var asc = str.charCodeAt(i);if(asc <= 0x7F){ //127count += 1;} else if(asc <= 0x7FF){ //2047count += 2;} else if(asc <= 0xFFFF) { //65537count += 3;} else {count += 4;}}}return count;}}//另外还有一种方法,可以计算JS在运行时,字符串的字节数,运行时是UTF-8标准,存储时字符集可以随意设定。function countBytesRuning(str){return new Blob([str]).size;}
match + 正则表达式 应用:JQuery选择器模拟
<!DOCTYPE html><html><head><meta charset="utf-8" /><title></title></head><body><div id="one"></div><div class="two"></div><div class="two"></div><div class="two" index=8></div></body><script type="text/javascript">function $(selector) {if(selector == undefined) return;var matched = null;//#id :id选择器,以#号开头//规则:以#号开头,后跟1到任意个字符if(matched = selector.match(/^\#(.+)/)) {return document.getElementById(matched[1]);}//.class : class选择器,以.开头//规则:以.号开头,后跟1到任意个字符if(matched = selector.match(/^\.(.+)/)) {return Array.from(document.getElementsByClassName(matched[1]));}//div :标签选择器,不以# .开头//规则:不以. #号开头,由1到任意个字符(字母或数字0-9a-zA-Z)组成if(matched = selector.match(/^[^\.\#]([0-9a-zA-Z]+)$/)) {return Array.from(document.getElementsByTagName(matched[0]));}//div[index=8] :属性选择器//规则:以1到任意字符(字母或数字0-9a-zA-Z)开头,[,属性名由以1到任意字符(字母或数字0-9a-zA-Z_-)组成,//=,属性值以1到任意字符(字母或数字0-9a-zA-Z)组成,以]结尾if(matched = selector.match(/^([^\.\#][0-9a-zA-Z]+)\[([0-9a-zA-Z\_\-]+)\=([0-9a-zA-Z]+)\]$/)) {var ele = matched[1];var attrKey = matched[2];var attrValue = matched[3];var eles = Array.from(document.getElementsByTagName(ele));var res = eles.filter(function(item, index, arr) {return item.getAttribute(attrKey) == attrValue;});return res;}}console.log($("#one"));console.log($(".two"));console.log($("div"));console.log($("div[index=8]"));</script></html>
//随机验证码生成function createCode(len) {var str = "";for(var i = 0; i < len; i++) {var ascii = randomInt(48, 90);while(ascii >= 58 && ascii <= 64) { //随机结果不符合要求ascii = randomInt(48, 90);}//console.log(ascii);str += String.fromCharCode(ascii);}return str;}
阅读全文
0 0
- javaScript核心对象--------------string
- JavaScript的String对象
- javascript 常用对象--- String
- JavaScript String 对象参考
- Javascript中的String对象
- JavaScript String 对象参考手册
- JavaScript String 对象参考手册
- Javascript String对象
- javascript:String 对象
- JavaScript String 对象 toUpperCase()
- JavaScript String 对象
- javascript string对象
- javascript String 对象
- [JavaScript]String 对象
- javascript String 对象介绍
- Javascript之String对象
- JavaScript String(字符串)对象
- JavaScript String 对象参考手册
- 抽象类和接口
- python调用caffe
- 关于EditText输入数字密码
- Cocoapods 引入第三方不提示或者找不到头文件
- 自定义编辑EditText打tag标签View
- JavaScript String 对象
- CodeFroces 96D Volleyball (最短路预处理跑最短路)
- ZOJ2770:Burn the Linked Camp(差分约束)
- 装饰者模式
- Android应用层(View体系)一
- Spring Aware 接口读取*.txt文件
- 驼峰字符串
- 翻转链表
- poj1971 哈希