js的检查它网约车并没有改变变,这增加,这已被删除两个字符串。实际问题

js 解决字符串等问题
js 解决字符串等问题
在JS的(字符串)数组中针对每个元素的内容进行查找和替换
JavaScript提供了在字符串中查找子串的函数indexOf()、lastIndexOf()、search(),还提供了字符串的替换函数replace(),而这些函数没有在数组对象Array中实现。
为了让Array也支持以上方法,我们可以对Array对象原型进行修改,增加了相应函数。让这些函数和String对象的函数同名且语法相近,以方便我们使用。下面做一些简单介绍,读者也可根据需要自己定义其它方法。//判断一个字符串是否包含另一个字符串,substr:子字符串,start:开始位置Array.prototype.indexOf=function(substr,start){var
ta,rt,d='\0';if(start!=null){ta=this.slice(start);rt=}else{ta=rt=0;}var
str=d+ta.join(d)+d,t=str.indexOf(d+substr+d);if(t==-1)return
-1;rt+=str.slice(0,t).replace(/[^\0]/g,'').return
}//该方法自右向左查找,返回substr在strObj中最后出现的位置,如果没有找到,返回-1。Array.prototype.lastIndexOf=function(substr,start){var
ta,rt,d='\0';if(start!=null){ta=this.slice(start);rt=}else{ta=rt=0;}ta=ta.reverse();var
str=d+ta.join(d)+d,t=str.indexOf(d+substr+d);if(t==-1)return
-1;rt+=str.slice(t).replace(/[^\0]/g,'').length-2;return
}//该方法替换字符串中的reg为rpby,比较常用。Array.prototype.replace=function(reg,rpby){var
ta=this.slice(0),d='\0';var
str=ta.join(d);str=str.replace(reg,rpby);return
str.split(d);}//寻找字符串中的指定子串Array.prototype.search=function(reg){var
ta=this.slice(0),d='\0',str=d+ta.join(d)+d,regstr=reg.toString();reg=new
RegExp(regstr.replace(/\/((.|\n)+)\/.*/g,'\\0$1\\0'),regstr.slice(regstr.lastIndexOf('/')+1));t=str.search(reg);if(t==-1)return
-1;return str.slice(0,t).replace(/[^\0]/g,'').}
以上四种方法均实现了对数组中每个元素都进行查找或替换,这样大家就不用做个循环浪费时间了。二、Js对字符串的操作。
1、字符串的创建创建一个字符串有几种方法。最简单的是用引号将一组字符包含起来,可以将其赋值给一个字符串变量。var
myStr = "Hello,
String!";我们在上面脚本创建了字符串,但本质上,它们并不是真正的字符串对象,准确地说,它们是字符串类型的值。要创建一个字符串对象,可使用如下语句:var
strObj = new String("Hello,
String!");使用typeof运算符查看会发现,上面的myStr类型为string,而strObj类型为object。如果想知道字符串的长度,使用其length属性:string.length。得到字符串的指定位置的字符使用方法:string.charAt(index);
<font color="#、字符串的拼接非常简单,就用一个"+"将两个字符串"相加":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内容呈现,就无效了,此时用"&br&"代替它:var
htmlString = "First line of string.&br&Second line of
string.";document.write(htmlString);
String对象还提供了方法concat(),它完成与"+"相同的功能:string.concat(value1,
value2, ...)不过concat()方法显然不如"+"来得直观简洁。
3、访问字符串的子串使用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".
slice()的原型为: string.slice(start,
end)参数start表示子串的起始位置,如果为负数,那么可以理解为倒数第几个开始,例如-3表示从倒数第三个开始;参数end表示结束位置,与start一样,它也可以为负数,其含义也表示到倒数第几个结束。slice()的参数可以为负数,所以要比substring()更加灵活,但没那么宽容了,如果start比end要大,它将返回一个空字符串(示例略)。还有一个方法是substr(),其原型为:
string.substr(start,
length)从原型可以看出它的参数的含义,start表示起始位置,length则表示子字符串的长度。JavaScript标准不提倡使用该方法。<font color="#、字符串的大小写转换使用toLowerCase()和toUpperCase()方法:var
city = "ShanGHai";city =
city.toLowerCase(); // city is "shanghai" now.5、判断两个字符串是否相等先将用户的输入值全部转换为大写(或小写),然后再行比较:var
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:
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.sort(function(a,b)
{ return a.localeCompare(b) }); // 调用sort()方法进行排序
6、字符串的查找使用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)
如果包含,进行相应处理;}也许一个字符串会包含另一字符串不止一次,这时第二个参数startIndex也许会派上用场,下面这个函数演示如何求得一个字符串包含另外一个字符串的次数:function
countInstances(mainStr,
subStr){var
0;do{offset
= mainStr.indexOf(subStr,
offset);if(offset
-1){count++;offset
subStr.}}while(offset
}String对象有一个与indexOf()对应的方法,lastIndexOf():strObj.lastIndexOf(substring[,
startindex])strObj为要进行判断的字符串,subString为要在strObj查找的子字符串,startIndex是可选的,表示查找的开始位置(基于0的索引),如果startIndex省略,则从strObj末尾处查找,如果startIndex小于0,则从0开始,如果startIndex大于最大索引,则从最大索引处开始。该方法自右向左查找,返回subString在strObj中最后出现的位置,如果没有找到,返回-1。
7、在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,
...)它接受0个或多个整数,返回一个字符串,该字符串包含了各参数指定的字符,例如:var
str = String.fromCharCode(72, 101, 108, 108, 111); // str ==
"Hello"三、Js对数组的操作
1、数组的创建
var arrayObj = new Array(); //创建一个数组
var arrayObj = new
Array([size]); //创建一个数组并指定长度,注意不是上限,是长度
var arrayObj = new Array([element0[, element1[,
...[, elementN]]]]); 创建一个数组并赋值
要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。
<font style="FONT-SIZE: 16px" color="#、数组的元素的访问
var testGetArrValue=arrayObj[1]; //获取数组的元素值
arrayObj[1]= "这是新值"; //给数组元素赋予新的值
<font style="FONT-SIZE: 16px" color="#、数组元素的添加
arrayObj. push([item1 [item2 [. . . [itemN ]]]]);//
将一个或多个新元素添加到数组结尾,并返回数组新长度
arrayObj.unshift([item1 [item2 [. . . [itemN
]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度
arrayObj.splice(insertPos,0,[item1[, item2[, . . .
[,itemN]]]]);//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。
<font style="FONT-SIZE: 16px" color="#、数组元素的删除
arrayObj.pop(); //移除最后一个元素并返回该元素值
arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移
arrayObj.splice(deletePos,deleteCount);
//删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素
<font style="FONT-SIZE: 16px" color="#、数组的截取和合并
arrayObj.slice(start, [end]); //以数组的形式返回数组的一部分,注意不包括
end 对应的元素,如果省略 end 将复制 start 之后的所有元素
arrayObj.concat([item1[, item2[, . . . [,itemN]]]]);
//将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组
<font style="FONT-SIZE: 16px" color="#、数组的拷贝
arrayObj.slice(0); //返回数组的拷贝数组,注意是一个新的数组,不是指向
arrayObj.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向
<font style="FONT-SIZE: 16px" color="#、数组元素的排序
arrayObj.reverse();
//反转元素(最前的排到最后、最后的排到最前),返回数组地址
arrayObj.sort(); //对数组元素排序,返回数组地址
<font style="FONT-SIZE: 16px" color="#、数组元素的字符串化
arrayObj.join(separator);
//返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。
toLocaleString 、toString
、valueOf:可以看作是join的特殊用法,不常用
<font style="FONT-SIZE: 16px" color="#、length 属性
Length属性表示数组的长度,即其中元素的个数。因为数组的索引总是由0开始,所以一个数组的上下限分别是:0和length-1。和其他大多数语言不同的是,JavaScript数组的length属性是可变的,这一点需要特别注意。当length属性被设置得更大时,整个数组的状态事实上不会发生变化,仅仅是length属性变大;当length属性被设置得比原来小时,则原先数组中索引大于或等于length的元素的值全部被丢失。下面是演示改变length属性的例子:
var arr=[12,23,5,3,25,98,76,54,56,76];
//定义了一个包含10个数字的数组
alert(arr.length); //显示数组的长度10
arr.length=12; //增大数组的长度
alert(arr.length); //显示数组的长度已经变为12
alert(arr[8]); //显示第9个元素的值,为56
arr.length=5; //将数组的长度减少到5,索引等于或超过5的元素被丢弃
alert(arr[8]); //显示第9个元素已经变为"undefined"
arr.length=10; //将数组长度恢复为10
alert(arr[8]);
//虽然长度被恢复为10,但第9个元素却无法收回,显示"undefined"
由上面的代码我们可以清楚的看到length属性的性质。但length对象不仅可以显式的设置,它也有可能被隐式修改。JavaScript中可以使用一个未声明过的变量,同样,也可以使用一个未定义的数组元素(指索引超过或等于length的元素),这时,length属性的值将被设置为所使用元素索引的值加1。例如下面的代码:
var arr=[12,23,5,3,25,98,76,54,56,76];
alert(arr.length);
arr[15]=34;
alert(arr.length);
代码中同样是先定义了一个包含10个数字的数组,通过alert语句可以看出其长度为10。随后使用了索引为15的元素,将其赋值为15,即arr[15]=34,这时再用alert语句输出数组的长度,得到的是16。无论如何,对于习惯于强类型编程的开发人员来说,这是一个很令人惊讶的特性。事实上,使用new
Array()形式创建的数组,其初始长度就是为0,正是对其中未定义元素的操作,才使数组的长度发生变化。
由上面的介绍可以看到,length属性是如此的神奇,利用它可以方便的增加或者减少数组的容量。因此对length属性的深入了解,有助于在开发过程中灵活运用。
<font style="FONT-SIZE: 16px" color="#、prototype 属性
返回对象类型原型的引用。prototype 属性是 object 共有的。
objectName.prototype
objectName 参数是object对象的名称。
说明:用 prototype
属性提供对象的类的一组基本功能。对象的新实例“继承”赋予该对象原型的操作。
对于数组对象,以以下例子说明prototype
属性的用途。
给数组对象添加返回数组中最大元素值的方法。要完成这一点,声明一个函数,将它加入
Array.prototype, 并使用它。
function array_max( )
var i, max = this[0];
for (i = 1; i &
this. i++)
if (max & this[i])
max = this[i];
Array.prototype.max = array_
var x = new Array(1, 2, 3, 4, 5, 6);
var y = x.max( );
该代码执行后,y 保存数组 x 中的最大值,或说 6
发表评论:JS拼接字符串,求大神帮看拼的有没有问题,另外alert()中参数能写多个么?求大神解答_百度知道
JS拼接字符串,求大神帮看拼的有没有问题,另外alert()中参数能写多个么?求大神解答
com/zhidao/wh%3D600%2C800/sign=ab8bf7e8b4de9c82a630f/faf2bef1.baidu://b./zhidao/wh%3D450%2C600/sign=f56c4acb568c0106caaebd/faf2bef1.jpg" esrc="http.baidu.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink"><img class="ikqb_img" src="http.hiphotos.baidu://b<a href="http://b.com/zhidao/pic/item/faf2bef1
样把html1、html3 拼在一起、shuliang、 leibie、html2,这样能其作用么
提问者采纳
head,/&#39;&#39,arguments[i]);
str=str,判断方法能不能用==我忘了;&lt.length&head&gt?/;;&#47?1?1;var head=&#39;这里设置一个标识为&#47看不是很清楚的图;?&#39;替换成body的内容;&lt,看看你的那个对象里有没有null或者html&gt.replace(ordV//i&lt,如果有就会报错var arr=[x0、写一个String.fromat(html, /i&lt,/for(var i=0:1,比如{1};?2,;;?/1/&&#47、走到E1不走了,x4];&这里建议先判断一下;html&&#47.
3?/head&gt.length){
var ordVal=&#39;;&#39;var body=&#39;1){
for(var i=1?&#47.format方法S/
}这是body&body&,body).format=function(str?2?&#47,只要不和你的本来的代码冲突就行了html=S&lt:都可以;}这样就可以这样用var html=&#39?&#47,x3;&lt,这样就不用双引号转义2,我做个示例
if(arr[i]==undefined || arr[i]==null){
continue,x2;把/?;;){
if(替换成head的内容;+i+&#39;&#39;//title&i++){
&#47,&#47,//这是title&lt,x1,给你几个建议1;
&#47、js字符串用单引号;&#47,当然这个标识你可以自己设置成别的;body&*args*&#47
提问者评价
谢谢,解决了一部分问题。(你可以把图片拖动一下到新窗口打开,就是原图了)
其他类似问题
为您推荐:
alert的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Blog Stats
Trackbacks - 0其他回答(4)
遍历一边,然后用类似hash,一样的,记录一下就知道了
收获园豆:5
园豆:9719
如楼上所说,代码如下:
function check(str){
var a = str.split(','),dt={},tmp,i=0,l=a.
for(; i & i++){
tmp = a[i];
if(tmp.length&0){
if(dt[tmp]){
return true;//true代表有重复的
dt[tmp]=1;
return true;//true代表没有重复的
check('sdfsdf,aaa,3sdf,w234,aaa');
收获园豆:10
checkString("aa,bb,cc,dd"); function checkString(str){ var arrStr=str.split(","); var hash = {}; for(var i=0;i&arrStr.length-1;i++){ if(!hash[arrStr[i]]) { hash[arrStr[i]]= } else{ alert("有重复的。"); } } alert("没有重复的!"); }
收获园豆:10
使用正则表达式进行匹配,性能绝对高!
&&&您需要以后才能回答,未注册用户请先。您的位置: >
JS实现判断两个字符串日期的大小
【实例名称】JS实现判断两个字符串日期的大小【实例描述】日期型数据可以使用日期对象的一些方法来判断大小,如getDate、getYear等。本例将使用一个更简单的方法实现字符型日期的判断。【实例代码】&html xmlns=&http://www.w3.org/1999/xhtml& &
&title&标题页-学无忧()&/title&
&script LANGUAGE=&JavaScript&&
function Judge()
& if(document.getElementById(&beginTime&).
value&=document.getElementById(&endTime&).value)
&&& alert(&开始日期小于结束日期&);
&&& alert(&开始日期大于结束日期&)
开始日期:&input type=&text& id=&beginTime&& &br/&
结束日期:&input type=&text& id=&endTime&&
&input type=&button& value=&判断& onclick=&Judge()& /&
【运行效果】&【难点剖析】本例的重点是字符型数据默认的比较方法。字符串是逐字符进行比较的,所以在比较日期型数据时,可先将日期数据转换为字符串.然后使用字符串默认的比较方法进行比较。【源码下载】为了JS代码的准确性,请点击:&进行本实例源码下载&
&& 评论:0
&& 评论:0
&& 评论:0
&& 评论:0
&& 评论:0
&& 评论:0
&& 评论:0
&& 评论:0
&& 评论:0
&& 评论:0
推荐图文教程
[推荐][推荐][推荐][推荐][推荐][推荐]

我要回帖

更多关于 excel 增加字符串 的文章

 

随机推荐