建站知识
发布时间:2018-09-30
字符串在javaScript中简直无处不在,在你处理用户的输入数据的时候,在读取或设置DOM目标的特点时,在操作cookie时,当然还有更多...。Javascript的中心部分供给了一组特点和办法用于通用的字符串操作,如切割字符串,改动字符串的大小写,操作子字符串等。
当前的大部分阅览器也能从强大的正则表达式获益,由于它极大地简化了很多的字符串操作任务,不过它也需求你战胜一条有些峻峭的学习曲线。在这儿,主要是介绍字符串自身的一些操作,正则表达式会在以后的漫笔中触及。
二、字符串的创立
创立一个字符串有几种办法。简略的是用引号将一组字符包括起来,能够将其赋值给一个字符串变量。
var myStr = "Hello, String!";
能够用双引号或单引号将字符串包括,但要留意,作为界定字符串的一对引号有必要是一样的,不能混用。
像var myString = "Fluffy is a PRetty cat.'; 这样的声明即是不合法的。
答应运用两种引号,使得某些操作变得简略,比方将一种嵌入别的一种:
document.write("");
咱们在上面脚本创立了几个字符串,但本质上,它们并不是真正的字符串目标,准确地说,它们是字符串类型的值。要创立一个字符串目标,可运用如下句子:var strObj = new String("Hello, String!");
运用typeof运算符检查会发现,上面的myStr类型为string,而strObj类型为object。
假如想知道字符串的长度,运用其length特点:string.length。
得到字符串的指定方位的字符运用办法:string.charAt(index);
三、字符串的拼接
疑问:
将两个或多个字符串拼接为一个大的字符串
解决方案:
十分简略,就用一个"+"将两个字符串"相加":
var longString = "One piece " + "plus one more piece.";
要将多个字符串累积为一个字符串,还能够运用"+="操作符:
var result = "";
result += "My name is Anders"
result += " and my age is 25";
要在字符串中添加换行符,需求运用转义字符"/n":
var confirmString = "You did not enter a response to the last " +
"question./n/nSubmit form anyway?";
var confirmValue = confirm(confirmString);
但这种办法只能用在像正告、承认对话框之类的状况下,假如将这段文本作为HTML内容呈现,就无效了,此刻用"
"替代它:
var htmlString = "First line of string.
Second line of string.";
document.write(htmlString);
String目标还供给了办法concat(),它完结与"+"一样的功用:
string.concat(value1, value2, ...)
不过concat()办法明显不如"+"来得直观简练。
四、访问字符串的子串
疑问:
取得一字符串的一部分的副本。
解决方案:
运用substring()或slice()办法(NN4+, IE4+),下面阐明它们的详细用法。
substring()的原型为: string.substring(from, to)
先进个参数from指定了子字符串在原字符串中的开端方位(依据0的索引);第二个参数to是可选的,它指定了子字符串在原字符串的完毕方位(依据0的索引),通常状况下,它应比from大,假如它被省掉,那么子字符串将一直到原字符串的结尾处。
假如参数from不小心比参数to大了会怎么?JavaScript会主动调停子字符串的起止方位,也即是说,substring()老是从两个参数中较小的那个开端,到较大的那个完毕。不过要留意,它包括开端方位的那个字符,但不包括完毕方位的那个字符。
var fullString = "Every dog has his day.";
var section = fullString.substring(0, 4); // section is "Ever".
section = fullString.substring(4, 0); // section is also "Ever".
section = fullString.substring(1, 1); // section is an empty string.
section = fullString.substring(-2, 4); // section is "Ever", same as fullString.substring(0, 4); slice()的原型为: string.slice(start, end)
参数start表明子串的开端方位,假如为负数,那么能够理解为倒数第几个开端,例如-3表明从倒数第三个开端;参数end表明完毕方位,与start一样,它也能够为负数,其意义也表明到倒数第几个完毕。slice()的参数能够为负数,所以要比substring()愈加灵敏,但没那么宽恕了,假如start比end要大,它将回来一个空字符串(示例略)。
还有一个办法是substr(),其原型为: string.substr(start, length)
从原型能够看出它的参数的意义,start表明开端方位,length则表明子字符串的长度。JavaScript规范不发起运用该办法。
五、字符串的大小写变换
疑问:
在你的页面上有文本框接纳用户的输入信息,比方城市,然后你会依据他的城市的不一样做不一样的处理,这时自然会用到字符串对比,那么在对比前,佳进行大小写变换,这样只要思考变换后的景象即可;或许要在页面上搜集数据,然后将这些数据存储在数据库,而数据库刚好只接纳大写字符;在这些状况下,咱们都要思考对字符串进行大小写变换。
解决方案:
运用toLowerCase()和toUpperCase()办法:
var city = "ShanGHai";
city = city.toLowerCase(); // city is "shanghai" now.
六、判别两个字符串是不是持平
疑问:
比方,你想拿用户的输入值与已知的字符串对比
解决方案:
先将用户的输入值全部变换为大写(或小写),然后再行对比:
var name = document.form1.txtUserName.value.toLowerCase();
if(name == "urname")
{
// statements go here.
}
JavaScript有两种持平运算符。一种是彻底向后兼容的,规范的"==",假如两个操作数类型不一致,它会在某些时候主动对操作数进行类型变换,思考下面的赋值句子:
var strA = "i love you!";
var strB = new String("i love you!");
这两个变量含有一样的字符序列,但数据类型却不一样,前者为string,后者为object,在运用"=="操作符时,JavaScript会尝试各种求值,以检查两者是不是会在某种状况下持平。所以下面的表达式成果为true: strA == strB。
第二种操作符是"严厉"的"===",它在求值时不会这么宽恕,不会进行类型变换。所以表达式strA === strB的值为false,虽然两个变量持有的值一样。
有时代码的逻辑需求你判别两个值是不是不持平,这儿也有两个挑选:"!="和严厉的"!==",它们的联系就类似于"=="和"==="。
评论:
"=="和"!="在求值时会尽可能地寻觅值的匹配性,但你可能仍是想在对比前进行显式的类型变换,以"协助"它们完结作业。比方,假如想判别一个用户的输入值(字符串)是不是等于一个数字,你能够让"=="帮你完结类型变换:
if(document.form1.txtAge.value == someNumericVar) { ... }
也能够提早变换:
if(parseInt(document.form1.txtAge.value) == someNumericVar) { ... }
假如你对比习惯于强类型的编程语言(比方C#,Java等),那么这儿你能够连续你的习惯(类型变换),这样也会增强程序的可读性。
有一种状况需求留意,即是计算机的区域设置。假如用"<"和">"来对比字符串,那么JavaScript把它们作为Unicode来对比,但明显,人们在阅览网页时不会把文本当作Unicode来阅览:) 比方在西班牙语中,依照传统的排序,"ch"将作为一个字符排在"c"和"d"之间。localeCompare()供给了一种方式,能够协助你运用默许区域设置下的字符排序规矩。
var strings; // 要排序的字符串数组,假定现已得到初始化
strings.sort(function(a,b) { return a.localeCompare(b) }); // 调用sort()办法进行排序
七、字符串的查找
疑问:
判别一个字符串是不是包括另一个字符串。
解决方案:
运用string的indexOf()办法:
strObj.indexOf(subString[, startIndex])
strObj为要进行判别的字符串,subString为要在strObj查找的子字符串,startIndex是可选的,表明查找的开端方位(依据0的索引),假如startIndex省掉,则从strObj开端处查找,假如startIndex小于0,则从0开端,假如startIndex大于大索引,则从大索引处开端。
indexOf()回来strObj中subString的开端方位,假如没有找到,则回来-1。在脚本中,能够这么运用:
if(largeString.indexOf(shortString) != -1)
{
// 假如包括,进行相应处理;
}
或许一个字符串会包括另一字符串不止一次,这时第二个参数startIndex或许会派上用场,下面这个函数演示怎么求得一个字符串包括别的一个字符串的次数:
function countInstances(mainStr, subStr)
{
var count = 0;
var offset = 0;
do
{
offset = mainStr.indexOf(subStr, offset);
if(offset != -1)
{
count++;
offset += subStr.length;
}
}while(offset != -1)
return count;
}
String目标有一个与indexOf()对应的办法,lastIndexOf():
strObj.lastIndexOf(substring[, startindex])
strObj为要进行判别的字符串,subString为要在strObj查找的子字符串,startIndex是可选的,表明查找的开端方位(依据0的索引),假如startIndex省掉,则从strObj结尾处查找,假如startIndex小于0,则从0开端,假如startIndex大于大索引,则从大索引处开端。该办法自右向左查找,回来subString在strObj中终呈现的方位,假如没有找到,回来-1。
八、在Unicode值和字符串中的字符间变换
疑问:
取得一个字符的Unicode编码值,反之亦然。
解决方案:
要取得字符的Unicode编码,能够运用string.charCodeAt(index)办法,其定义为:
strObj.charCodeAt(index)
index为指定字符在strObj目标中的方位(依据0的索引),回来值为0与65535之间的16位整数。例如:
var strObj = "ABCDEFG";
var code = strObj.charCodeAt(2); // Unicode value of character 'C' is 67
假如index指定的索引处没有字符,则回来值为NaN。
要将Unicode编码变换为一个字符,运用String.fromCharCode()办法,留意它是String目标的一个"静态办法",也即是说在运用前不需求创立字符串实例:
String.fromCharCode(c1, c2, ...)
它承受0个或多个整数,回来一个字符串,该字符串包括了各参数指定的字符,例如:
var str = String.fromCharCode(72, 101, 108, 108, 111); // str == "Hello"
完善的售后服务体系,专业的后台培训
安全、稳定、让合作更有保障
详细报价单,不弄虚作假
十年以上建站经验,重合同讲信誉
大连新图闻科技有限公司是一家品牌设计服务提供商,企业网络服务品牌,也是企业邮箱“盈世”的大连地区代理商。公司服务项目包括网站建设、平面设计、网络营销推广、商业摄影、企业邮箱等,帮助客户提高企业综合竞争能力。
市场部 : 8001@newtwowin.com
业务联系,业务需求请发到此邮箱.
QQ咨询: 94091176
客服部:xxz@newtwowin.com
地址:大连市西安路罗斯福B座3109