大家好,感謝邀請,今天來為大家分享一下lastindexof方法的問題,以及和String.lastIndexOf()的問題,最后一次出現不應該是3么的一些困惑,大家要是還不太明白的話,也沒有關系,因為接下來將為大家分享,希望可以幫助到大家,解決大家的問題,下面就開始吧!
leercode字符串題目常用方法
字符串類型在前端開發者看來是使用最頻繁的類型之一,網站上可見的各種文案,幾乎都是字符串或者數組類型的數據,我們經常需要使用的操作最多的就是以下幾點:讀取字符串、轉換字符串、清空字符串、拼接字符串、截取字符串等。
========(我們先來看一下Es6中最實用的一個模板字面量,后面會就使用率較高的字符串方法逐個分析。)
----------模板字面量(從ECMAScript2015開始,字符串字面量也可以稱為模板字面量:)
----字符串不區分單引號‘’和雙引號“”所有的字符串拼接都會識別,如果你的字符串比較長,可分行使用“+”來拼接。
例如:
letlongString="Thisisaverylongstringwhichneeds"+
"towrapacrossmultiplelinesbecause"+
"otherwisemycodeisunreadable.";
console.log(longString);
=>"Thisisaverylongstringwhichneedstowrapacrossmultiplelinesbecauseotherwisemycodeisunreadable."
-----或者也可以使用"\"來告訴瀏覽器,你需要繼續寫這個字符串,但需要保證"\"后面是沒有任何符號或者是空格的;
例如:
letlongString="Thisisaverylongstringwhichneeds\
towrapacrossmultiplelinesbecause\
otherwisemycodeisunreadable.";
console.log(longString)
=>"Thisisaverylongstringwhichneedstowrapacrossmultiplelinesbecauseotherwisemycodeisunreadable."
-----以前,我們用單引號或雙引號表示字符串。
leta='123';//單引號
letb="123";//雙引號
-------現在,使用模板字面量反撇號``。在實際開發中,這是經常都要用到的方法。
letc=`123`//反撇號
在字符串中使用反撇號,只需要加上轉義符,這時中間的`,沒有什么意義:
letd=`12\`3`//字符串內插入反撇號的方式。=》"12`3"
------在多行字符串的使用價值:
在沒有模板字面量的時候,我們要實現多行字符串,必須用到換行符:
leta='123\n456';
console.log(a);
//123
//456
-------------------使用模板字面量,就可以非常簡單的實現需求。
leta=`123
456`;
console.log(a)//123
//456
---------------在模板字面量插入變量的方法。
在原來的我們要在字符串中拼接變量,需要用‘+變量+’或者+來實現,而現在而是使用${params}直接插入你需要添加到字符串的位置。這種方式也叫作字符串占位符。占位符支持互相嵌套模板字面量,強大吧。有了它,我們終于可以拋棄+拼接字符串的惡心做法了
-------字符串和變量拼接:
varstr="lixiaoqing";
console.log(`woshi${str}`)=》"woshilixiaoqing"
-------變量和變量拼接:
varstr0="woshi";
varstr="lixiaoqing";
console.log(str0+`${str}`)//woshilixiaoqing
-------模板字面量的終極用法
tag是一個方法,方法名你可以任意命名,這種寫法被稱作標簽模板。
functiontag(literals,...substitutions){
//literals是數組,第一個位置是"",第二個位置是占位符之間的字符串,在本例中是haha
//substitutions是字符串中的模板字面量,可能多個
//函數最終返回字符串
}(此方法待完成)
一、charAt()根據下標查詢/訪問字符串的某個字符
varstr1="age";
console.log(str1.charAt(2))=>e
還可以使用[]的形式來訪問,中括號填寫的是字符串的下標
varstr1="age";
console.log(str1[2])=>e
二、字符串的比較">","<","===",">=","<=","!=="
1.字母字符串比較
varstr1="aa";
varstr2="bb";
console.log(str1<str2)=>true
2.數字字符串比較(會比較兩個數字的大小)
varstr1="10";
varstr2="15";
varstr3="10";
console.log(str1<str2,str1===str3)=>true,true
--------基本字符串和字符串對象的區別
請注意區分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編碼單元整數,當charCodeAt()括號中沒有值時,默認為0;當有參數時,查詢的是字符串的索引值,index的值為一個大于等于0,小于字符串長度的整數
例:
varstr="abc";
console.log(str.charCodeAt())=》97
varstr="abc";
console.log(str.charCodeAt(0))=》97
結果都是一樣的,查詢到"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"
當然我們也可以使用concat(....)
varstr1="a";
varstr2="b";
varstr3="c";
console.log(str1.concat(str2,str3))=>"abc"
六、includes(str)檢測一個字符串是否在另一個字符串里包含,區分大小寫
varstr="abcdef";
console.log(str.includes("def"));=>true
而我們把“def”換成大寫的“DEF”時,并不能檢測到
varstr="abcdef";
console.log(str.includes("DEF"));=>false
七、endsWith()檢測字符串是不是以“str”結尾的
str.endsWith(searchString[,position]);
searchString
要搜索的子字符串。
position
在str中搜索searchString的結束位置,當不填寫值時,默認值為str.length,也就是真正的字符串結尾處,從1開始,空格和符號也算字符。也是開始的位置
例:
1、當沒有第二個參數時。默認第二個參數時字符串的length
varstr="Tobe,ornottobe,thatisthequestion.";
console.log(str.endsWith("question."))=>true
2、第二個參數的開始時從“1”開始的,而不是從“0”
varstr="Tobe,ornottobe,thatisthequestion.";
console.log(str.endsWith("T",1))=>true;
3、第二個參數的計算是包含空格和標點符號的
varstr="Tobe,ornottobe,thatisthequestion.";
console.log(str.endsWith("Tobe",5))=>true
八、indexOf()方法返回str查找的結果,如果是有返回指定索引(查找到結果的第一個字符的位置),如果沒有返回“-1”,區別大小寫
例:
"ABC".indexOf("A")=》0查詢到“A”,返回位置為索引“0”
"ABC".indexOf("e")=》-1并沒有查詢到“e”,返回-1
"ABC".indexOf("AB")=》0同樣查詢到“AB”,返回結果以第一個字符的位置做結果
----------檢測是否存在某字符串
當檢測某個字符串是否存在于另一個字符串中時,可使用下面的方法:
"BlueWhale".indexOf("Blue")!==-1;//true"BlueWhale".indexOf("Bloe")!==-1;//false
使用indexOf統計一個字符串中某個字母出現的次數
在下例中,設置了count來記錄字母e在字符串str中出現的次數:
varstr='Tobe,ornottobe,thatisthequestion.';
varcount=0;
varpos=str.indexOf('e');
while(pos!==-1){
count++;
pos=str.indexOf('e',pos+1);
//重新給pos賦值,從上個查詢到str的位置+1的位置繼續查找,如果能查到就會再進循環,count+1
}
console.log(count);//displays4
九、lastIndexOf()方法返回指定值在調用該方法的字符串中最后出現的位置,如果沒找到則返回-1
語法
str.lastIndexOf(searchValue[,fromIndex])
參數
searchValue
一個字符串,表示被查找的值。
fromIndex
從調用該方法字符串的此位置處開始查找。可以是任意整數。默認值為str.length。如果為負值,則被看作0。如果fromIndex>str.length,則fromIndex被看作str.length。
例:
當只有一個參數的時候,第二個值默認str.length,也就是查詢整個字符串,查找到這個str在整個字符串中最后出現的位置
"AVBDHIUOKL".lastIndexOf("O");//7
"AFGHJKLL:JJHKAJALKA".lastIndexOf("A");//18
當有第二個參數時,第二個參數會被看成查詢這個字符串的結束位置
"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)構造并返回一個新字符串,該字符串是循環完成后的新字符串
repeat(count)的值一般為數字,就好比"a".repeat(5)=="a"*5=="aaaaa"
但也會出現其他情況,例如以下:
1.當值為“-1”時,會報錯,所以值不能為負數
"abc".repeat(-1)//RangeError:repeatcountmustbepositiveandlessthaninifinity
2.那我們值為“0”時,會有什么情況呢?將不會循環,返回一個空字符串
"abc".repeat(0)//""
3.那么我們接下來輸入一個正常的數字“1”,repeat給我們返回了"abc"*1的結果,它將循環一遍
"abc".repeat(1)//"abc"
4.那么我們試試“2”,看看會不會返回循環兩次,確實它返回了字符串循環兩遍的結果
"abc".repeat(2)//"abcabc"
5.那我們來試試小數,看看是循環幾次呢,結果是它將小數點后面的抹去了,只循環了前面的數字
"abc".repeat(3.5)//"abcabcabc"參數count將會被自動轉換成整數.
6.那我們試試“1/0”,并沒有解析出來,因為1/0==inifinity
"abc".repeat(1/0)//RangeError:repeatcountmustbepositiveandlessthaninifinity
7.那我們再來試試字符串呢?結果它將字符串自動轉為了number,并正確循環并返回了。
"abcd".repeat("2")//"abcabc"
8.那我們來試試,看看它是否能解析中文漢字呢?結果是并沒有,也沒有報錯
"abcd".repeat("二")//""
十一、str.slice(beginSlice,endSlice)截取字符串,第一個參數為開始位置,第二個參數為結束位置,前包后不包
1.slice()從一個字符串中提取字符串并返回新字符串。在一個字符串中的改變不會影響另一個字符串。也就是說,slice不修改原字符串,只會返回一個包含了原字符串中部分字符的新字符串。
2.注意:slice()提取的新字符串包括beginSlice但不包括endSlice。
3.提取新字符串從第二個字符到第四個(字符索引值為1,2,和3)。
"avxdsdfasd".slice(1,4)//vxd
4.提取第三個字符到倒數第二個字符。-1為倒數第一個
"abckdesdf".slice(2,-1)//ckdesd
5.當開始的值和結束的值都為負數時,結果會從后向前數,從-3到-1之間的值(前包后不包)
"abckdesdf".slice(-3,-1)//"sd"
十二、str.split()方法,使用指定的分隔符字符串將一個string對象分割成字符串數組
1.當括號中為空值時,直接將它轉為字符串數組
console.log("abcdefg".split());//["abcdefg"]
2.當括號中為空引號時,它將每個字符串都分割了出來
console.log("abcdefg".split(""));//["a","b","c","d","e","f","g"]
當在空引號中加上一個空格時,它會以你原字符串的空格來分割
"WebkitMozOmsKhtml".split("")//["Webkit","Moz","O","ms","Khtml"]
3.當括號中為字符串中的字母,它將以當前字母分割字符串
console.log("abcdefg".split("a"));//["","bcdefg"]
console.log("abcdefg".split("b"));//["a","cdefg"]
4.當括號中字符串并不是當前字符串中包含的,它只接轉成數組字符串,不做其他操作
console.log("abcdefg".split("bbbb"));//["abcdefg"]
十三、startsWith()檢測字符串是不是以“str”開頭的,根據判斷返回true,false(ES6新添,與endsWith相反)
語法
str.startsWith(searchString[,position]);
參數
searchString
要搜索的子字符串。
position
在str中搜索searchString的開始位置,默認值為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()方法返回一個字符串中從指定位置開始到指定字符數的字符。
str.substr(start[,length])
start:開始截取的位置,開始索引為0,最大為str.length-1,也可為負數;
length:要截取的長度,如果不填寫,默認為str.length-1;最小為1,最大為str.length-1.負數無效,如果為0或者負值,返回一個空字符串。
varstr="abcdefghij";
1.當兩個值都為正值,且都在范圍之內:
console.log("(1,2):"+str.substr(1,2));//(1,2):bc
2.當截取位置為負數時,會從后向前數,倒數第一個索引為-1,截取的長度會從當前位置向后數
console.log("(-3,2):"+str.substr(-3,2));//(-3,2):hi
3.當只有開始位置的值,并且為負值時,會從當前位置,截取到字符串的末尾
console.log("(-3):"+str.substr(-3));//(-3):hij
4.當只有開始的位置,為正值,第二個值默認是str.length-1,也就是截取到字符串的末尾
console.log("(1):"+str.substr(1));//(1):bcdefghij
5.當開始的索引是超過字符串長度的負數時,就相當于字符串一直是從后向前數的
console.log("(-20,2):"+str.substr(-20,2));//(-20,2):ab
6.當開始的索引是超過字符串的長度的正值時,無法截取到內容,返回空字符串
console.log("(20,2):"+str.substr(20,2));//(20,2):""
十五、str.substring()截取開始位置和結束位置之間的字符串,前包后不包
str.substring(start,stop)
start:開始截取的位置,不為負數;
stop:結束的截取位置,不為負數;
當參數為負數時,不識別,默認轉為0;
當第二個值為負數時,默認轉為0,,并調換開始和結束的兩個值的位置,
varstr="abcdefghij";
1.當開始和結束都為正值,并都在范圍內,從索引為1的位置截取到索引為2的位置;
console.log("(1,2):"+str.substring(1,2));//(1,2):b
2.當只有一個開始位置的值時,會從開始位置直接截取到結束位置;
console.log("(1):"+str.substring(1));//(1):bcdefghij
3.當開始位置為負數時,會直接轉為0來截取;
console.log("(-1):"+str.substring(-1));//(-1):abcdefghij
4.當結束位置超過字符串的長度,會默認忽略第二個參數;
console.log("(1,20):"+str.substring(1,20));//((-1):bcdefghij
5.當結束位置為負數,會直接轉為0,并交換開始和結束的位置;
console.log("(1,-5):"+"sdsdfsdf".substring(1,-5));//((1,-5):s
6.當開始位置和結束位置的值為同一值時,返回空字符串
console.log("(1,1):"+"sdsdfsdf".substring(1,1));//((1,1):""
十六、str.toLowerCase()將字符串轉為小寫的形式(并不會影響字符串本身的值)
console.log("ABC".toLowerCase());//"abc"
十七、str.UpperCase()將字符串轉為大寫的形式(并不會影響字符串本身的值)
console.log("alphabet".toUpperCase());//"ALPHABET"
十八、str.toString()方法用于將現有的對象轉為字符串;
1.數組轉字符串;
console.log([1,2,3,4,5].toString());//"1,2,3,4,5"
2.對象轉字符串,將會返回[objectObject],故不支持轉換
vara={a:1,b:2};
console.log(a.toString());//[objectObject]
十九、str.trim()方法會從一個字符串的兩端刪除空白字符,在這個上下文中的空白字符是所有的空白字符(space(空格鍵),tab,no-breakspace等)以及所有行終止字符(如LF,CR)。
trim()方法并不會影響原字符串,會返回一個新字符串。
例:
1.當字符串兩側都有空格時,會全部刪除
varorig='foo';
console.log(orig.trim());//'foo'
2.當字符串單側有空格,則就從單側刪除
varorig='foo';
console.log(orig.trim());//'foo'
二十、String.fromCharCode(num1,num2,、、numN)用于返回當前數字所對應的字符
語法
String.fromCharCode(num1,...,numN)
參數
num1,...,numN
一組序列數字,表示Unicode值。
描述
該方法返回一個字符串,而不是一個String對象。
由于fromCharCode是String的靜態方法,所以應該像這樣使用:String.fromCharCode(),而不是作為你創建的String對象的方法
vue的filter如何調用function的方法
在Vue中,可以使用filters來對數據進行格式化處理,但是filters只能調用已經定義好的函數。如果想要調用其他方法,可以將其封裝為一個函數,并將該函數作為Vue的方法使用。然后在需要調用的地方使用攜帶括號的該方法名稱即可。這樣就可以在模板中調用該方法,實現自定義的數據處理和格式化。
substring怎么取小數點
兩種方式:
1、通過強制類型轉換
floata=1.1f;//定義一個浮點變量aintb=(int)a;//這里使用(int)方式對float進行強轉,結果為1
2、通過轉換為字符串,在截取整數部分
floata=1.1f;//定義一個浮點變量a Stringstr=String.valueOf(a);//浮點變量a轉換為字符串str intidx=str.lastIndexOf(".");//查找小數點的位置 StringstrNum=str.substring(0,idx);//截取從字符串開始到小數點位置的字符串,就是整數部分 intnum=Integer.valueOf(strNum);//把整數部分通過Integer.valueof方法轉換為數字
js驗證上傳圖片的方法
代碼示例如下:
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htmlxmlns="http://www.w3.org/1999/xhtml">
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/>
<title>js驗證圖片</title>
<script>
UpLoadFileCheck=function()
{
this.AllowExt=".jpg,.gif";
//允許上傳的文件類型0為無限制
//每個擴展名后邊要加一個","小寫字母表示
this.AllowImgFileSize=0;
//允許上傳文件的大小0為無限制單位:KB
this.AllowImgWidth=0;
//允許上傳的圖片的寬度0為無限制單位:px(像素)
this.AllowImgHeight=0;
//允許上傳的圖片的高度0為無限制單位:px(像素)
this.ImgObj=newImage();
this.ImgFileSize=0;
this.ImgWidth=0;
this.ImgHeight=0;
this.FileExt="";
this.ErrMsg="";
this.IsImg=false;//全局變量
}
UpLoadFileCheck.prototype.CheckExt=function(obj)
{
this.ErrMsg="";
this.ImgObj.src=obj.value;
//this.HasChecked=false;
if(obj.value=="")
{
this.ErrMsg="\n請選擇一個文件";
}
else
{
this.FileExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();
if(this.AllowExt!=0&&this.AllowExt.indexOf(this.FileExt)==-1)
//判斷文件類型是否允許上傳
{
this.ErrMsg="\n該文件類型不允許上傳。請上傳"+this.AllowExt+"類型的文件,當前文件類型為"+this.FileExt;
}
}
if(this.ErrMsg!="")
{
this.ShowMsg(this.ErrMsg,false);
returnfalse;
}
else
returnthis.CheckProperty(obj);
}
UpLoadFileCheck.prototype.CheckProperty=function(obj)
{
if(this.ImgObj.readyState!="complete")//
{
sleep(1000);//一秒使用圖能完全加載
}
if(this.IsImg==true)
{
this.ImgWidth=this.ImgObj.width;
//取得圖片的寬度
this.ImgHeight=this.ImgObj.height;
//取得圖片的高度
if(this.AllowImgWidth!=0&&this.AllowImgWidth<this.ImgWidth)
this.ErrMsg=this.ErrMsg+"\n圖片寬度超過限制。請上傳寬度小于"+this.AllowImgWidth+"px的文件,當前圖片寬度為"+this.ImgWidth+"px";
if(this.AllowImgHeight!=0&&this.AllowImgHeight<this.ImgHeight)
this.ErrMsg=this.ErrMsg+"\n圖片高度超過限制。請上傳高度小于"+this.AllowImgHeight+"px的文件,當前圖片高度為"+this.ImgHeight+"px";
}
this.ImgFileSize=Math.round(this.ImgObj.fileSize/1024*100)/100;
//取得圖片文件的大小
if(this.AllowImgFileSize!=0&&this.AllowImgFileSize<this.ImgFileSize)
this.ErrMsg
String.lastIndexOf()的問題,最后一次出現不應該是3么
lastIndexOf(val,X)lastIndexOf方法是倒序查找,所以X也就是倒著開始的那個下標。
你bc在1的后面,所以你肯定查不到了。你可以直接lastIndexOf(val);也可以把X改成比內容出現的下標大就可以了。返回1的原因看源碼就知道了OK,關于lastindexof方法和String.lastIndexOf()的問題,最后一次出現不應該是3么的內容到此結束了,希望對大家有所幫助。