快捷搜索:

JS中字符串的相干操作,JavaScript中的字符串操作

作者: w88官方网站手机版  发布:2019-06-29

JavaScript中的字符串操作

一、概述
   字符串在JavaScript中差不离无处不在,在你管理用户的输入数据的时候,在读取或设置DOM对象的习性时,在操作cookie时,当然还应该有更加多...。JavaScript的骨干部分提供了一组属性和格局用于通用的字符串操作,如分割字符串,改造字符串的大小写,操作子字符串等。
    当前的大多数浏览器也能从壮大的正则表达式受益,因为它巨大地简化了汪洋的字符串操作任务,可是它也要求您克制一条有些陡峭的求学曲线。在此处,主尽管介绍字符串本人的一些操作,正则表明式会在今后的小说中涉及。

二、字符串的创设
    创制贰个字符串有二种方式。最轻松易行的是用引号将一组字符包括起来,能够将其赋值给叁个字符串变量。
    var myStr = "Hello, String!";
    能够用双引号或单引号将字符串包罗,但要注意,作为限制字符串的一对引号必须是同一的,不可能混用。
    像var myString = "Fluffy is a pretty cat.'; 那样的评释正是私自的。
    允许利用三种引号,使得一些操作变得简单,比如将一种嵌入此外一种:

document.write("<img src='img/logo.jpg' height='30' width='100' alt='Logo'>");

 

    我们在上面脚本创造了多少个字符串,但实质上,它们并不是真正的字符串对象,正确地说,它们是字符串类型的值。要创设一个字符串对象,可应用如下语句: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.nnSubmit form anyway?";
var confirmValue = confirm(confirmString);

    但这种艺术只可以用在像警告、确认对话框之类的情状下,假诺将这段文本作为HTML内容展现,就没用了,此时用"<br>"替代它:

    

var htmlString = "First line of string.<br>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代表从倒数第2个起初;参数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等),那么这里您能够三番两次你的习惯(类型调换),那样也会升高程序的可读性。

   有一种情景需求专注,正是Computer的区域安装。假使用"<"和">"来比较字符串,那么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可能会派上用场,上边这一个函数演示怎样求得三个字符串包涵此外二个字符串的次数:

   

w88官方网站手机版 1

   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;
    }

w88官方网站手机版 2

    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之间的十二个人整数。譬喻:

    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"

讨论:
     Unicode包含了这几个世界上众多书写语言的字符集,但别因为Unicode包罗二个字符就希望以此字符能够在警戒对话框、文本框或页面展现时日常展现。假使字符集不可用,在页面将显示为问号或别的符号。一台规范的北美的计算机将无法在显示器上显示中文字符,除非华语的字符集及其字体已经设置。

 

参考:
    JavaScript And Dhtml Cookbook(Oreilly)      ;
    JavaScript-The Definitive Guide(4th Edition);

版权注解:本文为博主原创文章,未经博主允许不得转载。


一、字符串的制造

始建四个字符串有三种情势。最简易的是用引号将一组字符包罗起来,能够将其赋值给二个字符串变量。

var myStr = "Hello, String!";

能够用双引号或单引号将字符串包涵,但要注意,作为限制字符串的一对引号必须是均等的,不能够混用。像var myString = "Fluffy is a pretty cat.'; 那样的宣示正是违规的。    

同意采纳三种引号,使得一些操作变得简单,比方将一种嵌入此外一种:    

document.write("<img src="/img/logo.jpg" height='30' width='100' alt='Logo'>");

 

大家在上面脚本创立了多少个字符串,但本质上,它们并不是真的的字符串对象,正确地说,它们是字符串类型的值。要开创一个字符串对象,可选择如下语句:

 

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.nnSubmit form anyway?";
var confirmValue = confirm(confirmString);    

但这种情势只好用在像警告、确认对话框之类的动静下,若是将这段文本作为HTML内容展现,就没用了,此时用"<br>"代替它:


var htmlString = "First line of string.<br>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等),那么这里你能够继续你的习贯(类型转变),这样也会升高程序的可读性。

有一种状态要求专注,正是Computer的区域安装。要是用"<"和">"来相比较字符串,那么JavaScript把它们作为Unicode来比较,但肯定,大家在浏览网页时不会把文件当作Unicode来阅读:) 比方在乌Crane语中,依照守旧的排序,"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时期的15人整数。举个例子:


    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"

讨论:

 

Unicode包括了那么些世界上众多挥毫语言的字符集,但别因为Unicode包括一个字符就愿意以此字符能够在告诫对话框、文本框或页面展现时平常展现。即使字符集不可用,在页面将浮现为问号或别的符号。一台规范的北美的管理器将不能够在荧屏上显得中文字符,除非国语的字符集及其字体已经安装

本文由www.w88985.com发布于w88官方网站手机版,转载请注明出处:JS中字符串的相干操作,JavaScript中的字符串操作

关键词: www.w88985.c