javascript中字符串操作的详细解决方案

首先,概述
字符串在Javascript中几乎无处不在。当你处理用户输入的数据,当你读取或设置DOM对象的属性,有更多的当然当你使用Cookie,Javascript的核心部分提供了一组通用的字符串操作的属性和方法,如分割字符串,字符串转换的大小,操作的子串,等。
大多数浏览器也可以受益于强大的正则表达式,因为它极大地简化了大量的字符串操作任务,但它也要求您克服陡峭的学习曲线。

二、字符串的创建
创建字符串有几种方法,最简单的方法是包含一组带有引号的字符,这些字符可以被分配给字符串变量。
无功mystr =你好,字符串!;
字符串可以包含双引号或单引号,但请注意,定义字符串的一对引号必须是相同的,不能混合。
如建立字符串=蓬松可爱的猫。;这样的声明是非法的。
允许使用两种引号使某些操作变得简单,例如在另一个中嵌入一个:
复制代码代码如下所示:
document.write();


我们在上面的脚本创建若干个字符串,但在本质上,他们不是真正的字符串对象,这是,事实上,字符串类型的值。创建一个字符串对象,您可以使用以下语句:VaR strobj =新的字符串(你好,字符串!;
typeof运算符查看就会发现上面的mystr类型是字符串和strobj类型对象。

如果你想知道一个字符串的长度,其长度属性:string.length。
使用字符串中指定位置的字符的方法:string.charat(指数);

三,字符串拼接
问题:
将两个或多个字符串拼接成一个大字符串
解uff1a
非常简单,使用+来添加两个字符串:
复制代码代码如下所示:
VaR的长串=一件+加一块。;

作为字符串的累积字符串,还可以使用= 运算符:
复制代码代码如下所示:
var结果;
我的名字是安德斯=结果
结果和我的年龄是25;

添加一个字符串中的换行符,你需要使用转义字符:
复制代码代码如下所示:
无功confirmstring =你没有输入响应到最后+
问题。无论如何提交表单;
无功confirmvalue =确认(confirmstring);

但是这种方法只能在警告、确认对话框等情况下使用,如果文本被渲染为HTML内容,那么它将是无效的。用替换替换它。

复制代码代码如下所示:
无功htmlstring =第一行的字符串,字符串的第二行。;
document.write(htmlstring);


字符串对象还提供了一种连接(),执行相同的功能,+:
String.concat(value1,value2,…)
但是concat()方法显然是不直观的比+。

四。访问字符串的字符串。
问题:
弦的一部分的复制品。
解uff1a
用substring()()()方法或切片(NN- +,IE4 +),下面举例说明其具体用法。
子串的原型()是string.substring(来自于)
第一个参数指定的起始位置的字符串的子串(基于0个指标);二是可选的,它指定在原字符串的结束位置的字符串(基于0个指标),正常情况下,它应该是大于,如果省略它,然后子总是会结束的字符串。
如果参数太粗心而大于参数,该怎么办Javascript自动调解的启动和停止位置的字符串,也就是说,substring()总是从较小的一个两参数和两端的较大的一个。但是,应该指出的是,它包含了起始位置的字符,但不包含结束位置的字符。
复制代码代码如下所示:
无功fullstring =每只狗都有他的日子。;
无功部分= fullstring.substring(0, 4); / / 部分。
第= fullstring.substring(4, 0); / /节也曾经。
第= fullstring.substring(1, 1); / /部分是一个空字符串。
第= fullstring.substring(- 2, 4); / / 部分是相同的,因为fullstring.substring(0, 4);


片的原型()是string.slice(开始、结束)
参数启动子串的起始位置,如果为负,也可以理解为最后的数,如3从第三开始到最后结束;参数表示结束的位置,如启动,它也可以是负的,它的意思是说,到最后几层的参数。()可以是负的,所以它比子更灵活的(),但不那么宽容。如果起始大于结束,它将返回空字符串。
一个方法是substr(),其原型是:string.substr(开始,长度)。
从原型,你可以看到各个参数的含义,开始代表起始位置和长度的子串的长度。Javascript标准不提倡使用此方法。
五,字符串的大小和写转换。
问题:
在你的网页上的文本框中输入信息,接收用户如城市,然后你会根据他的城市性质的不同做不同的处理,然后使用字符串比较,所以在比较之前,最好的情况下转换,所以只考虑情况后转换;或收集然后在页面数据,这些数据将被存储在数据库中,和数据库只接受大写字符;在这些情况下,我们不得不考虑字符串的大小写转换。
解uff1a
使用toLowerCase()和toUpperCase()方法:
复制代码代码如下所示:
var上海;
城市= city.tolowercase(市); / / 上海现在。

六,判断这两个字符串是否相等。
问题:
例如,您希望将用户的输入值与已知字符串进行比较。
解uff1a
首先,将用户的输入值转换为大写(或小写),然后进行比较。

复制代码代码如下所示:
变量名= document.form1.txtusername.value.tolowercase();
如果(name = =urname )
{
去这里。语句
}

Javascript有两个相等的操作符。一个是完全向后兼容的,标准的

复制代码代码如下所示:
VaR策略=我爱你!;
变量strB =新的字符串(我爱你!;

这两个变量包含相同的字符序列,但数据类型不同,前者是字符串,它是对象,在使用= =运算符,Javascript将尝试检测是否两种评价,在某些情况下会是平等的。所以下面的表达式是正确的:战略= strB。
第二算子是严,它不会在评价如此宽容,没有类型转换。因此虚假应变= strB的表达式的值,虽然两变量持有相同的价值。
有时代码的逻辑要求您判断两个值是否相等,有两个选项:!=严格=和!
讨论:
=和!将试图在评估中找到匹配的值,但在比较之前,您可能仍然希望作出显式类型转换,以便帮助他们完成工作。例如,如果您想确定用户输入值(字符串)是否等于一个数字,您可以使用 来帮助完成类型转换:
如果(document.form1.txtage.value = = somenumericvar){…}
它也可以提前转换:
如果(parseInt(文档。1。txtage。值)= = somenumericvar){…}
如果你是使用强类型的编程语言(如C #,java,等),然后你可以继续你的习惯(类型转换),这也将提高程序的可读性。

有一种情况需要注意,那就是,电脑的设置。如果你使用比较字符串,然后Javascript为Unicode,但显然,人们在浏览网页的时候不会把文本作为一个Unicode读:例如,在西班牙),根据传统秩序,CH在C和D作为一个character.localecompare()提供了一种方法来帮助你的默认设置下使用字符的排序规则。
复制代码代码如下所示:
var字符串;对一个字符串排序数组,假设已经初始化。
Strings.sort(功能(A,B)a.localecompare(b){ return }); / /调用sort()方法的分类


七,字符串的查找
问题:
确定字符串是否包含另一个字符串。
解uff1a
使用indexOf()方法的字符串:
StrObj.indexOf(子字符串的字符{,})
strobj是判断字符串的子串strobj搜索字符串,字符是可选的,搜索的开始位置说(基于0指数),如果字符被忽略,从一开始就找到strobj,如果指数小于从0, 0日开始,如果指数指数大于最大。从最大的索引开始。
indexOf()返回子串在strobj起始位置,如果没有找到,则返回-1.in脚本,您可以使用此:
复制代码代码如下所示:
如果(largestring.indexof(shortstring)!= 1)
{
如果包含,则处理;
}

也许一个字符串将包含一个字符串,不止一次,当第二参数指数可以派上用场,下面的函数演示了如何获得一个包含另一个字符串的个数。

复制代码代码如下所示:
功能countinstances(主流,substr)
{
var计数= 0;
var偏移量= 0;

{
偏移量= mainstr.indexof(substr,偏移);
如果(偏移量)!= 1)
{
计数+;
substr.length偏移;
}
}(偏移量)!= 1)
返回计数;
}

字符串对象的方法,对应于()、()返回字符串:
StrObj.lastIndexOf(子字符串的字符{,})
strobj是判断字符串的子串strobj搜索字符串,字符是可选的,搜索的开始位置说(基于0指数),如果字符被省略,从strobj搜索结束,如果指数小于从0, 0日开始,如果指数指数大于最大。从开始的最大索引。此方法查找从右到左,返回子串在strobj最后的位置,并返回1如果没找到。

八。Unicode值和字符串中的字符间转换
问题:
字符的Unicode编码值是得到的,反之亦然。
解uff1a
要得到一个字符编码的Unicode字符,可以使用string.charcodeat(指数)的方法,它的定义是:
strobj.charcodeat(指数)
指数是在strobj对象指定的字符的位置(基于0个指标),并返回0和65535之间的值,例如一个16位整数:

无功strobj =ABCDEFG;
VaR代码= strobj.charcodeat(2);对character'c'is 67 / / Unicode值

如果索引指定的索引没有字符,则返回值是楠。

将Unicode编码成一个字符,使用String.fromCharCode()的注意,这是一个字符串对象的静态方法,也就是说,没有字符串实例使用前需要。
String.fromCharCode(C1,C2,…)
它接受0个或多个整数,并返回一个字符串,其中包含由参数指定的字符,如:
复制代码代码如下所示:
var str = string.fromcharcode(72, 101, 108,108, 111); / / STR = =你好

讨论:
Unicode包含多种文字在世界上,但因为Unicode包含一个字符,预计该字符可以在警告对话框显示,文本框或网页介绍。如果字符集是不可用的,页面将显示为问号或其他符号。一个典型的北美计算机将不显示中文字符在屏幕上除非中文字符集的字体已经安装。

参考资源uff1a
javascript和DHTML的食谱(地下);
权威指南(第四版);