1. 程式人生 > 其它 >JS內建物件——字串物件

JS內建物件——字串物件

/* 字串的不可變,指的是裡面的值不可變。雖然看上去可以改變內容,但其實是地址變了,記憶體中新開闢了一個記憶體空間。
字串所有的方法,都不會修改字串本身(字串是不可變的) ,操作完成會返回一一個新的字串。 */

// 1、查詢索引號
var str = '改革春風吹滿地,春天來了';
console.log(str.indexOf('春', 3));//從索引3的位置開始找,

/* 案例:查詢字串”abcoefoxyozzopp"中所有o出現的位置以及次數
核心演算法:先查詢第一個o出現的位置
然後只要indexOf 返回的結果不是-1就繼續往後查詢
因為indexOf只能查詢到第一個,所以後面的查詢,一定是當前索引加1,從而繼續查詢 */
var str1 = 'oabcoefoxyozzopp';
var index = str1.indexOf('o');
var num = 0;
while (index !== -1) {
    console.log(index);
    num++;
    index = str1.indexOf('o', index + 1);
}
console.log('o出現的次數是: ' + num);

//2、根據位置返回字元
console.log(str.charAt(3));
console.log(str.charCodeAt(3)); //返回相應索引號的字元ASCII值目的:判斷使用者按 下了那個鍵
console.log(str[0]); //h5新增

//案例:判斷一個字串' abcoefoxyozzopp'中出現次數最多的字元,並統計其次數。
/* 核心演算法:利用charAt()遍歷這個字串
        把每個字元都儲存給物件,如果物件沒有該屬性,就為1,如果存在了就+1
        遍歷物件,得到最大值和該字元*/
var str = 'abcoefoxyozzopp';
var o = {};
for (var i = 0; i < str.length; i++) {
    var chars = str.charAt(i); // chars是字串的每一一個字元
    if (o[chars]) { // o[chars] 得到的是屬性值
        o[chars]++;
    } else {
        o[chars] = 1;
    }
}
console.log(o);
// 遍歷物件
var max = 0;
var ch = '';
for (var k in o) {
    if (o[k] > max) {
        max = o[k]; // o[k] 得到的是屬性值
        ch = k; // k得到是屬性名
    }
}
console.log(max);
console.log('最多的字元是' + ch);

//3、拼接concat
console.log(str.concat('red'));

//4、擷取
console.log(str.substr(2, 2)); //從索引2的位置開始,擷取2個

// 5、替換
console.log(str1.replace('o', 'b')); //把o替換成b,只替換第一個o

// 6、字串轉為陣列
var str2 = 'c,java,js,css'
console.log(str2.split(','));