js如何清空數(shù)組
方式1:splice函數(shù)
index:必選,規(guī)定從何處添加/刪除元素。howmany:必選,規(guī)定應(yīng)該刪除多少元素。未規(guī)定此參數(shù),則刪除從index開始到原數(shù)組結(jié)尾的所有元素。element1:可選,規(guī)定要添加到數(shù)組的新元素。
方式2:給數(shù)組的length賦值為0
賦予數(shù)組的長度小于本身的長度,數(shù)組中后面的元素將被截?cái)唷Yx予數(shù)組的長度大于本身的長度,將擴(kuò)展數(shù)組長度,多的元素為undefined。
方式3:直接賦予新數(shù)組[]
這種方式為將arr重新復(fù)制為空數(shù)組,之前的數(shù)組如果沒有被引用,將等待垃圾回收。
js截取中英文字符串、標(biāo)點(diǎn)符號無亂碼示例解讀
<script>
functionsubString(str,len,hasDot)
{
varnewLength=0;
varnewStr="";
varchineseRegex=/[^\x00-\xff]/g;
varsingleChar="";
varstrLength=str.replace(chineseRegex,"**").length;
for(vari=0;i<strLength;i++){
singleChar=str.charAt(i).toString();
if(singleChar.match(chineseRegex)!=null){
newLength+=2;
}else{
newLength++;
}
if(newLength>len){
break;
}
newStr+=singleChar;
}
if(hasDot&&strLength>len){
newStr+="...";
}
returnnewStr;
}
alert(subString("js截取中英文字符串無亂碼",10,true));
</script>
js如何判斷輸入框中第一位是否為斜杠
讀取字段后可以截取第一個字符判斷,也可以用indexof來判斷
js怎么拿到字符串第6個字符
通過substring截取第六位
leercode字符串題目常用方法
字符串類型在前端開發(fā)者看來是使用最頻繁的類型之一,網(wǎng)站上可見的各種文案,幾乎都是字符串或者數(shù)組類型的數(shù)據(jù),我們經(jīng)常需要使用的操作最多的就是以下幾點(diǎn):讀取字符串、轉(zhuǎn)換字符串、清空字符串、拼接字符串、截取字符串等。
========(我們先來看一下Es6中最實(shí)用的一個模板字面量,后面會就使用率較高的字符串方法逐個分析。)
----------模板字面量(從ECMAScript2015開始,字符串字面量也可以稱為模板字面量:)
----字符串不區(qū)分單引號‘’和雙引號“”所有的字符串拼接都會識別,如果你的字符串比較長,可分行使用“+”來拼接。
例如:
letlongString="Thisisaverylongstringwhichneeds"+
"towrapacrossmultiplelinesbecause"+
"otherwisemycodeisunreadable.";
console.log(longString);
=>"Thisisaverylongstringwhichneedstowrapacrossmultiplelinesbecauseotherwisemycodeisunreadable."
-----或者也可以使用"\"來告訴瀏覽器,你需要繼續(xù)寫這個字符串,但需要保證"\"后面是沒有任何符號或者是空格的;
例如:
letlongString="Thisisaverylongstringwhichneeds\
towrapacrossmultiplelinesbecause\
otherwisemycodeisunreadable.";
console.log(longString)
=>"Thisisaverylongstringwhichneedstowrapacrossmultiplelinesbecauseotherwisemycodeisunreadable."
-----以前,我們用單引號或雙引號表示字符串。
leta='123';//單引號
letb="123";//雙引號
-------現(xiàn)在,使用模板字面量反撇號``。在實(shí)際開發(fā)中,這是經(jīng)常都要用到的方法。
letc=`123`//反撇號
在字符串中使用反撇號,只需要加上轉(zhuǎn)義符,這時中間的`,沒有什么意義:
letd=`12\`3`//字符串內(nèi)插入反撇號的方式。=》"12`3"
------在多行字符串的使用價值:
在沒有模板字面量的時候,我們要實(shí)現(xiàn)多行字符串,必須用到換行符:
leta='123\n456';
console.log(a);
//123
//456
-------------------使用模板字面量,就可以非常簡單的實(shí)現(xiàn)需求。
leta=`123
456`;
console.log(a)//123
//456
---------------在模板字面量插入變量的方法。
在原來的我們要在字符串中拼接變量,需要用‘+變量+’或者+來實(shí)現(xiàn),而現(xiàn)在而是使用${params}直接插入你需要添加到字符串的位置。這種方式也叫作字符串占位符。占位符支持互相嵌套模板字面量,強(qiáng)大吧。有了它,我們終于可以拋棄+拼接字符串的惡心做法了
-------字符串和變量拼接:
varstr="lixiaoqing";
console.log(`woshi${str}`)=》"woshilixiaoqing"
-------變量和變量拼接:
varstr0="woshi";
varstr="lixiaoqing";
console.log(str0+`${str}`)//woshilixiaoqing
-------模板字面量的終極用法
tag是一個方法,方法名你可以任意命名,這種寫法被稱作標(biāo)簽?zāi)0濉?/p>
functiontag(literals,...substitutions){
//literals是數(shù)組,第一個位置是"",第二個位置是占位符之間的字符串,在本例中是haha
//substitutions是字符串中的模板字面量,可能多個
//函數(shù)最終返回字符串
}(此方法待完成)
一、charAt()根據(jù)下標(biāo)查詢/訪問字符串的某個字符
varstr1="age";
console.log(str1.charAt(2))=>e
還可以使用[]的形式來訪問,中括號填寫的是字符串的下標(biāo)
varstr1="age";
console.log(str1[2])=>e
二、字符串的比較">","<","===",">=","<=","!=="
1.字母字符串比較
varstr1="aa";
varstr2="bb";
console.log(str1<str2)=>true
2.數(shù)字字符串比較(會比較兩個數(shù)字的大小)
varstr1="10";
varstr2="15";
varstr3="10";
console.log(str1<str2,str1===str3)=>true,true
--------基本字符串和字符串對象的區(qū)別
請注意區(qū)分JavaScript字符串對象和基本字符串值.(對于Boolean和Numbers也同樣如此.)
vars_prim="foo";vars_obj=newString(s_prim);
console.log(typeofs_prim);//Logs"string"
console.log(typeofs_obj);//Logs"object"
三、字符串的長度length
varstr="我愛你中國";
console.log(str.length)=>5
四、charCodeAt(index)返回表示給定索引的字符的Unicode的值。
方法返回0到65535之間的UTF-16編碼單元匹配Unicode編碼單元整數(shù),當(dāng)charCodeAt()括號中沒有值時,默認(rèn)為0;當(dāng)有參數(shù)時,查詢的是字符串的索引值,index的值為一個大于等于0,小于字符串長度的整數(shù)
例:
varstr="abc";
console.log(str.charCodeAt())=》97
varstr="abc";
console.log(str.charCodeAt(0))=》97
結(jié)果都是一樣的,查詢到"a"在編碼中的位置為97
varstr="abc";
console.log(str.charCodeAt(1))=》98
字母"b"在編碼中的位置為98
五、str.concat(str1,str2....)字符串拼接
在字符串拼接中,最常用的還是“+”;
varstr="d";
varstr1="e";
varstr2="f";
varstr3=str+str1+str2;
console.log(str3)=>"def"
當(dāng)然我們也可以使用concat(....)
varstr1="a";
varstr2="b";
varstr3="c";
console.log(str1.concat(str2,str3))=>"abc"
六、includes(str)檢測一個字符串是否在另一個字符串里包含,區(qū)分大小寫
varstr="abcdef";
console.log(str.includes("def"));=>true
而我們把“def”換成大寫的“DEF”時,并不能檢測到
varstr="abcdef";
console.log(str.includes("DEF"));=>false
七、endsWith()檢測字符串是不是以“str”結(jié)尾的
str.endsWith(searchString[,position]);
searchString
要搜索的子字符串。
position
在str中搜索searchString的結(jié)束位置,當(dāng)不填寫值時,默認(rèn)值為str.length,也就是真正的字符串結(jié)尾處,從1開始,空格和符號也算字符。也是開始的位置
例:
1、當(dāng)沒有第二個參數(shù)時。默認(rèn)第二個參數(shù)時字符串的length
varstr="Tobe,ornottobe,thatisthequestion.";
console.log(str.endsWith("question."))=>true
2、第二個參數(shù)的開始時從“1”開始的,而不是從“0”
varstr="Tobe,ornottobe,thatisthequestion.";
console.log(str.endsWith("T",1))=>true;
3、第二個參數(shù)的計(jì)算是包含空格和標(biāo)點(diǎn)符號的
varstr="Tobe,ornottobe,thatisthequestion.";
console.log(str.endsWith("Tobe",5))=>true
八、indexOf()方法返回str查找的結(jié)果,如果是有返回指定索引(查找到結(jié)果的第一個字符的位置),如果沒有返回“-1”,區(qū)別大小寫
例:
"ABC".indexOf("A")=》0查詢到“A”,返回位置為索引“0”
"ABC".indexOf("e")=》-1并沒有查詢到“e”,返回-1
"ABC".indexOf("AB")=》0同樣查詢到“AB”,返回結(jié)果以第一個字符的位置做結(jié)果
----------檢測是否存在某字符串
當(dāng)檢測某個字符串是否存在于另一個字符串中時,可使用下面的方法:
"BlueWhale".indexOf("Blue")!==-1;//true"BlueWhale".indexOf("Bloe")!==-1;//false
使用indexOf統(tǒng)計(jì)一個字符串中某個字母出現(xiàn)的次數(shù)
在下例中,設(shè)置了count來記錄字母e在字符串str中出現(xiàn)的次數(shù):
varstr='Tobe,ornottobe,thatisthequestion.';
varcount=0;
varpos=str.indexOf('e');
while(pos!==-1){
count++;
pos=str.indexOf('e',pos+1);
//重新給pos賦值,從上個查詢到str的位置+1的位置繼續(xù)查找,如果能查到就會再進(jìn)循環(huán),count+1
}
console.log(count);//displays4
九、lastIndexOf()方法返回指定值在調(diào)用該方法的字符串中最后出現(xiàn)的位置,如果沒找到則返回-1
語法
str.lastIndexOf(searchValue[,fromIndex])
參數(shù)
searchValue
一個字符串,表示被查找的值。
fromIndex
從調(diào)用該方法字符串的此位置處開始查找。可以是任意整數(shù)。默認(rèn)值為str.length。如果為負(fù)值,則被看作0。如果fromIndex>str.length,則fromIndex被看作str.length。
例:
當(dāng)只有一個參數(shù)的時候,第二個值默認(rèn)str.length,也就是查詢整個字符串,查找到這個str在整個字符串中最后出現(xiàn)的位置
"AVBDHIUOKL".lastIndexOf("O");//7
"AFGHJKLL:JJHKAJALKA".lastIndexOf("A");//18
當(dāng)有第二個參數(shù)時,第二個參數(shù)會被看成查詢這個字符串的結(jié)束位置
"AFGHJKLL:JJHKAJALKA".lastIndexOf("A",10);
//0從0到第10個索引值時,只在0的位置查詢到"A",所以返回0
"AFGHJKLL:JJHKAJALKA".lastIndexOf("A",15);//15
//0從0到第15個索引值時,在第15的位置查詢到"A",所以返回15
十、str.repeat(count)構(gòu)造并返回一個新字符串,該字符串是循環(huán)完成后的新字符串
repeat(count)的值一般為數(shù)字,就好比"a".repeat(5)=="a"*5=="aaaaa"
但也會出現(xiàn)其他情況,例如以下:
1.當(dāng)值為“-1”時,會報(bào)錯,所以值不能為負(fù)數(shù)
"abc".repeat(-1)//RangeError:repeatcountmustbepositiveandlessthaninifinity
2.那我們值為“0”時,會有什么情況呢?將不會循環(huán),返回一個空字符串
"abc".repeat(0)//""
3.那么我們接下來輸入一個正常的數(shù)字“1”,repeat給我們返回了"abc"*1的結(jié)果,它將循環(huán)一遍
"abc".repeat(1)//"abc"
4.那么我們試試“2”,看看會不會返回循環(huán)兩次,確實(shí)它返回了字符串循環(huán)兩遍的結(jié)果
"abc".repeat(2)//"abcabc"
5.那我們來試試小數(shù),看看是循環(huán)幾次呢,結(jié)果是它將小數(shù)點(diǎn)后面的抹去了,只循環(huán)了前面的數(shù)字
"abc".repeat(3.5)//"abcabcabc"參數(shù)count將會被自動轉(zhuǎn)換成整數(shù).
6.那我們試試“1/0”,并沒有解析出來,因?yàn)?/0==inifinity
"abc".repeat(1/0)//RangeError:repeatcountmustbepositiveandlessthaninifinity
7.那我們再來試試字符串呢?結(jié)果它將字符串自動轉(zhuǎn)為了number,并正確循環(huán)并返回了。
"abcd".repeat("2")//"abcabc"
8.那我們來試試,看看它是否能解析中文漢字呢?結(jié)果是并沒有,也沒有報(bào)錯
"abcd".repeat("二")//""
十一、str.slice(beginSlice,endSlice)截取字符串,第一個參數(shù)為開始位置,第二個參數(shù)為結(jié)束位置,前包后不包
1.slice()從一個字符串中提取字符串并返回新字符串。在一個字符串中的改變不會影響另一個字符串。也就是說,slice不修改原字符串,只會返回一個包含了原字符串中部分字符的新字符串。
2.注意:slice()提取的新字符串包括beginSlice但不包括endSlice。
3.提取新字符串從第二個字符到第四個(字符索引值為1,2,和3)。
"avxdsdfasd".slice(1,4)//vxd
4.提取第三個字符到倒數(shù)第二個字符。-1為倒數(shù)第一個
"abckdesdf".slice(2,-1)//ckdesd
5.當(dāng)開始的值和結(jié)束的值都為負(fù)數(shù)時,結(jié)果會從后向前數(shù),從-3到-1之間的值(前包后不包)
"abckdesdf".slice(-3,-1)//"sd"
十二、str.split()方法,使用指定的分隔符字符串將一個string對象分割成字符串?dāng)?shù)組
1.當(dāng)括號中為空值時,直接將它轉(zhuǎn)為字符串?dāng)?shù)組
console.log("abcdefg".split());//["abcdefg"]
2.當(dāng)括號中為空引號時,它將每個字符串都分割了出來
console.log("abcdefg".split(""));//["a","b","c","d","e","f","g"]
當(dāng)在空引號中加上一個空格時,它會以你原字符串的空格來分割
"WebkitMozOmsKhtml".split("")//["Webkit","Moz","O","ms","Khtml"]
3.當(dāng)括號中為字符串中的字母,它將以當(dāng)前字母分割字符串
console.log("abcdefg".split("a"));//["","bcdefg"]
console.log("abcdefg".split("b"));//["a","cdefg"]
4.當(dāng)括號中字符串并不是當(dāng)前字符串中包含的,它只接轉(zhuǎn)成數(shù)組字符串,不做其他操作
console.log("abcdefg".split("bbbb"));//["abcdefg"]
十三、startsWith()檢測字符串是不是以“str”開頭的,根據(jù)判斷返回true,false(ES6新添,與endsWith相反)
語法
str.startsWith(searchString[,position]);
參數(shù)
searchString
要搜索的子字符串。
position
在str中搜索searchString的開始位置,默認(rèn)值為0,也就是真正的字符串開頭處。
varstr="Tobe,ornottobe,thatisthequestion.";
console.log(str.startsWith("Tobe"))//true
console.log(str.startsWith("be"))//false
console.log(str.startsWith("nottobe",10))//true
console.log(str.startsWith("nottobe"))//false
十四、str.substr()方法返回一個字符串中從指定位置開始到指定字符數(shù)的字符。
str.substr(start[,length])
start:開始截取的位置,開始索引為0,最大為str.length-1,也可為負(fù)數(shù);
length:要截取的長度,如果不填寫,默認(rèn)為str.length-1;最小為1,最大為str.length-1.負(fù)數(shù)無效,如果為0或者負(fù)值,返回一個空字符串。
varstr="abcdefghij";
1.當(dāng)兩個值都為正值,且都在范圍之內(nèi):
console.log("(1,2):"+str.substr(1,2));//(1,2):bc
2.當(dāng)截取位置為負(fù)數(shù)時,會從后向前數(shù),倒數(shù)第一個索引為-1,截取的長度會從當(dāng)前位置向后數(shù)
console.log("(-3,2):"+str.substr(-3,2));//(-3,2):hi
3.當(dāng)只有開始位置的值,并且為負(fù)值時,會從當(dāng)前位置,截取到字符串的末尾
console.log("(-3):"+str.substr(-3));//(-3):hij
4.當(dāng)只有開始的位置,為正值,第二個值默認(rèn)是str.length-1,也就是截取到字符串的末尾
console.log("(1):"+str.substr(1));//(1):bcdefghij
5.當(dāng)開始的索引是超過字符串長度的負(fù)數(shù)時,就相當(dāng)于字符串一直是從后向前數(shù)的
console.log("(-20,2):"+str.substr(-20,2));//(-20,2):ab
6.當(dāng)開始的索引是超過字符串的長度的正值時,無法截取到內(nèi)容,返回空字符串
console.log("(20,2):"+str.substr(20,2));//(20,2):""
十五、str.substring()截取開始位置和結(jié)束位置之間的字符串,前包后不包
str.substring(start,stop)
start:開始截取的位置,不為負(fù)數(shù);
stop:結(jié)束的截取位置,不為負(fù)數(shù);
當(dāng)參數(shù)為負(fù)數(shù)時,不識別,默認(rèn)轉(zhuǎn)為0;
當(dāng)?shù)诙€值為負(fù)數(shù)時,默認(rèn)轉(zhuǎn)為0,,并調(diào)換開始和結(jié)束的兩個值的位置,
varstr="abcdefghij";
1.當(dāng)開始和結(jié)束都為正值,并都在范圍內(nèi),從索引為1的位置截取到索引為2的位置;
console.log("(1,2):"+str.substring(1,2));//(1,2):b
2.當(dāng)只有一個開始位置的值時,會從開始位置直接截取到結(jié)束位置;
console.log("(1):"+str.substring(1));//(1):bcdefghij
3.當(dāng)開始位置為負(fù)數(shù)時,會直接轉(zhuǎn)為0來截取;
console.log("(-1):"+str.substring(-1));//(-1):abcdefghij
4.當(dāng)結(jié)束位置超過字符串的長度,會默認(rèn)忽略第二個參數(shù);
console.log("(1,20):"+str.substring(1,20));//((-1):bcdefghij
5.當(dāng)結(jié)束位置為負(fù)數(shù),會直接轉(zhuǎn)為0,并交換開始和結(jié)束的位置;
console.log("(1,-5):"+"sdsdfsdf".substring(1,-5));//((1,-5):s
6.當(dāng)開始位置和結(jié)束位置的值為同一值時,返回空字符串
console.log("(1,1):"+"sdsdfsdf".substring(1,1));//((1,1):""
十六、str.toLowerCase()將字符串轉(zhuǎn)為小寫的形式(并不會影響字符串本身的值)
console.log("ABC".toLowerCase());//"abc"
十七、str.UpperCase()將字符串轉(zhuǎn)為大寫的形式(并不會影響字符串本身的值)
console.log("alphabet".toUpperCase());//"ALPHABET"
十八、str.toString()方法用于將現(xiàn)有的對象轉(zhuǎn)為字符串;
1.數(shù)組轉(zhuǎn)字符串;
console.log([1,2,3,4,5].toString());//"1,2,3,4,5"
2.對象轉(zhuǎn)字符串,將會返回[objectObject],故不支持轉(zhuǎn)換
vara={a:1,b:2};
console.log(a.toString());//[objectObject]
十九、str.trim()方法會從一個字符串的兩端刪除空白字符,在這個上下文中的空白字符是所有的空白字符(space(空格鍵),tab,no-breakspace等)以及所有行終止字符(如LF,CR)。
trim()方法并不會影響原字符串,會返回一個新字符串。
例:
1.當(dāng)字符串兩側(cè)都有空格時,會全部刪除
varorig='foo';
console.log(orig.trim());//'foo'
2.當(dāng)字符串單側(cè)有空格,則就從單側(cè)刪除
varorig='foo';
console.log(orig.trim());//'foo'
二十、String.fromCharCode(num1,num2,、、numN)用于返回當(dāng)前數(shù)字所對應(yīng)的字符
語法
String.fromCharCode(num1,...,numN)
參數(shù)
num1,...,numN
一組序列數(shù)字,表示Unicode值。
描述
該方法返回一個字符串,而不是一個String對象。
由于fromCharCode是String的靜態(tài)方法,所以應(yīng)該像這樣使用:String.fromCharCode(),而不是作為你創(chuàng)建的String對象的方法