這篇主要說一說截取字符串的方法,用於幫助自己縷清方法的作用,參數的意義,返回值,是否對於原來的字符串進行了操作等。
在javascript中,常見的截取字符串的方法有slice()、substring()、substr()這三種方法,我主要為了捋清楚這三種方法的相同點與不同點,在什么情況下適用於哪一種。優雅的代碼都是從一點一滴開始的。
slice()
首先,我在百度上面搜索了一下slice()方法,給出的鏈接是Javascript Array對象的 slice()方法,是對數組的操作。作用是從已有的數組中返回選定的元素,返回值是一個數組,並且不會對原先的數組產生影響。
然后我有上了W3schoole查找slice()方法,找到了Javascript String 對象的slice()方法。用於提取字符串的片段,並在新的字符串中返回被提取的部分。返回值是一個字符串,並且不會對原先的字符串產生影響。
雖然作用對像不一樣,但是我個人覺得是一個東西。都是從原先對象里面截取出來新的東西,並且不對原先的對象有操作,返回值是根據原先的對象的類型來決定的。
slice()有兩個參數,第一個參數可以為需要截取的起始點,第二個參數可以為截取結束的點。如果第二個參數不傳輸的畫,默認情況下會截取到當前對象的最后。
代碼示例:
JavaScript Array
<script type="text/javascript">
var zhanShi = ["沖鋒","斷筋","巨人打擊","壓制","斬殺"];
console.log(zhanShi);
console.log(zhanShi.slice(1,2)); console.log(zhanShi.slice(1)); </script>
下面是這段代碼在谷歌瀏覽器上面顯示的結果:
JavaScript String
<script type="text/javascript">
var wuqiZhan = "我叫武器戰,打架開電扇。CD一分半,轉完就完蛋。";
console.log(wuqiZhan);
console.log(wuqiZhan.slice(2,5)); console.log(wuqiZhan.slice(6)); </script>
下面是這段代碼在谷歌瀏覽器上面顯示的結果:
當然,我們現在傳輸的都是正數,我閑的無聊,然后我就給傳了負數當作參數:
<script type="text/javascript"> var str = "所以說很無奈"; console.log(str.slice(-3)); var arr = ["你看","傳了","負數"]; console.log(arr.slice(-2)); </script>
substring()
substring()是用於提取字符串中介於兩個指定下標之間的字符,兩個參數,其中第一個參數是必須的,第二個參數是可選的。如果不傳第二個參數,默認情況下會提取到最后。返回值是一個新的字符串。准確的說,返回的額字符串包含了第一個參數位置的字符串,而不包含第二個參數位置的元素。
上代碼,其他都是空談,看了代碼就明白了:
<script type="text/javascript"> var bingFa = "寒冰箭呀biubiubiu,五個冰刺一發腦殘箭"; console.log(bingFa.substring(4,13)); </script>
slice可以傳負數,substring可不可以呢?不可以!明確的告訴你不可義,但是卻不會報錯,只會把整個字符串都輸出出來。可是,如果你給前面的參數傳輸的比較大,后面的參數比較小,那樣會出現什么情況呢?
<script type="text/javascript"> var bingFa = "寒冰箭呀biubiubiu,五個冰刺一發腦殘箭"; console.log(bingFa.substring(13,4)); </script>
看的出來,即使你把前面的參數傳輸的比后面的參數大,但是substring會自動的調整兩個參數的位置,也就是大的參數總是在后面。
substr()
substr()用於在字符串中從第一個參數位置起,截取到第二個指定的參數。其中第一個參數是必須的,第二個參數是可選的。如果不傳輸第二個參數的話,默認會截取到字符串最后。返回值是一個新的字符串,這個方法同樣不會對原先的字符串進行修改。這個方法並沒有被標准話,所以說,使用與否看個人吧。
代碼:
<script type="text/javascript"> var shuShi = "一發腦殘箭,天人相隔永不見"; console.log(shuShi.substr(2,3)); console.log(shuShi.substr(-3,3)); </script>
上面的代碼包含的第一個參數為負值的情況。
也許我的這些東西你看着很淺顯,但這就像一磚一瓦,慢慢來嘛。我已經盡力寫的很詳細了,希望對你會有幫助。