- N +

js截取指定字符后面的內(nèi)容?js常用的4種截取字符串方法

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對象的方法

返回列表
上一篇:
下一篇: