短橫變駝峯
student-man-xiaoming 變爲studentManXiaoming
方法1:
(1)用字符串的split方法變爲數組
(2)遍歷數組每一項,首字母都變爲大寫,然後與剩餘字母連接join
<script type="text/javascript" charset="UTF-8">
var str="student-man-xiaoming";
//拆爲數組
var strArr=str.split("-");
console.log("第一步輸出:"+strArr);
//遍歷數組,駝峯第一項不變爲大寫
for(var i=1;i<strArr.length;i++){
var chars=strArr[i];
strArr[i]=chars[0].toUpperCase()+chars.slice(1);
}
console.log("第二步輸出:"+strArr);
//join所有字符
console.log("最終結果輸出:"+strArr.join(""));
</script>
方法2:
<script type="text/javascript" charset="UTF-8">
var str="student-man-xiaoming";
//用正則表達式替換replace
str=str.replace(/\-(\w)/g,function (match,$1) {
return $1.toUpperCase();
});
console.log(str);
</script>
尋找連續三項的字符串
“aabbbccddddee”返回[2,3,4,7,8,9,10]
雙指針法99%能解決字符串問題。如:“最大連續相同的子串;最大連續重複子串”
<script type="text/javascript" charset="UTF-8">
var str="aabbbccddddee";
//指針的位置
var i=0;
var j=1;
var result=[];
//開始循環
while(i<str.length){
//判斷指針所指的數字是否相等
if(str[i]!=str[j]) {
//再判斷i和及是否相差3及以上
if (j - i >= 3) {
//若true,則將index放入result數組中
for (var m = i; m <= j - 1; m++) {
result.push(m);
}
}
i = j;
}
//相等或不相等,都j++
j++;
}
console.log(result);
</script>
給數字加上千分位符
12345678901,返回“12,345,678,901”
數組和字符串互換方法很好用,要敏感。實際上就是[12,345,678,901],然後join(“,”)。問題轉化爲:把12345678901拆分爲數組!
<script type="text/javascript" charset="UTF-8">
var num=12345678901;
//獲取數字位數
var length=num.toString().length;
//從-3位開始
var start=-3;
//向上取整3的倍數位結束
var end=-Math.ceil(length/3)*3;
//從-3位開始截取第一個片段
var result=[num.toString().slice(-3)];
console.log("第一段爲:"+result);
//第一個片段以後,直到結束位,都每間隔3位截取一次
for(var i=start-3;i>=end;i-=3){
//逐漸向前插入片段
var str=num.toString().slice(i,i+3);
console.log("截取字段爲:"+str);
result.unshift(str);
}
console.log("結果爲:"+result);
</script>
<script type="text/javascript" charset="UTF-8">
var str="12345678901";
/*(?=)定語從句,$單詞末尾
*從全局找距單詞末尾3或3的倍數的數字,並將其間隙替換成","*/
str=str.replace(/\B(?=(\d{3})+$)/g,",");
console.log(str);
</script>