js中字符串操做

字符串API

包裝類型和字符串的不可變性

  • 1.包裝類型
  • 包裝類型:簡單數據類型對應的複雜形勢!
//包裝類型:String/Number/Boolean;
    //簡單類型:string/number/boolean/undefined/null;
    
    //1.包裝類型;
      var obj = new Object();
      obj.aaa = 111;//自定義屬性
      console.log(obj.aaa);// 111 獲取屬性值
    
      //number:簡單數據類型不能夠自定義屬性
      var num = 111;
      num.bbb = 222;
      console.log(num.bbb);// undefined 簡單數據類型不能夠自定義屬性;
    
      //簡單數據類型有屬性!!!
      var str = "abc";
      console.log(str.length); // 3
  • 2.字符串的不可變性

(字符串一旦定義就不會被修改,想要修改從新開闢空間)json

根據索引查字符

1.charAt( )

//1.字符串.charAt(索引值);    字符串中對應索引值的字符。
//兼容性很棒;
例:
    var str = "0Aabcd我&";
    console.log(str.charAt(1));// A
    console.log(str.charAt(3));// b
    console.log(str.charAt(str.length-2)); // 我
    console.log(str.charAt(str.length-1)); // &

2.字符串[索引值]

// 用法 str[0]
字符串[索引值] // 和數組同樣;可是兼容性很差;H5新增,ie678不支持; 用法和charAt同樣
例:
    var str = "0Aabcd我&";
    console.log(str[1]); // A
    console.log(str[3]); // b
    console.log(str[str.length-2]); // 我
    console.log(str[str.length-1]); // &

3.字符串.charCodeAt(索引值)

字符串.charCodeAt(索引值); // 給索引,查對應的Unicode編碼;
console.log(str.charCodeAt(0)); // 48
console.log(str.charCodeAt(1)); // 65
console.log(str.charCodeAt(2)); // 97

根據字符查索引

1.indexOf( )

例:
    //indexOf(); 給字符查索引(從前日後)
    var str = "abcdcbb";
    console.log(str.indexOf("a"));// 0
    console.log(str.indexOf("b"));// 1
    console.log(str.indexOf("xxx"));//查不到返回 -1
    //查多個字符
    console.log(str.indexOf("abc"));// 0 以首個單詞字符爲準; 
    console.log(str.indexOf("ac")); // 不完整或者順序不對都是-1;
    console.log(str.indexOf("acb"));// 不完整或者順序不對都是-1;

2.lastIndexOf()

lastIndexOf();   // 給字符查索引(從後往前)
//同理indexOf;
//字符串一旦聲明,索引值就固定了,不管從前日後,仍是從後往前,索引值都是固定的
var str = "abcdcbb";
console.log(str.lastIndexOf("b"));//6

字符串鏈接和截取

concat( )

// 拼接字符串  (拼接字符串更喜歡直接用 + )
var str1 = "123";
var str2 = "abc";
console.log(str1.concat(str2)); // 123abc

//拼接數組
var arr1 = [11,22,33];
var arr2 = [44,55,66];
console.log(arr1.concat(arr2)); // [1, 12, 33, 44, 55, 66]

slice( )

var str = "123abc";
slice() //從start位置開始,截取到end位置,end取不到
//和數組的徹底同樣: 字符串.slice(開始索引值,結束索引值);
console.log(str3.slice(3));        //從索引值爲3的元素截取到最後  abc
console.log(str3.slice(0,3));    //包左不包右 123
console.log(str3.slice(-2));    //從後面截取兩個 bc
console.log(str3.slice(3,0));    s//前面一個數大,後面的數小;  返回 "";

substr( )

var str = "123abc";
substr()       //開始索引值,截取幾個;
console.log(str3.substr(3));    //從索引值爲3的元素截取到最後 abc
console.log(str3.substr(2,1));    //從索引值爲2的日後截取一個 3
console.log(str3.substr(-2));    //從後面截取兩個 bc
//先後不同大沒問題,由於第二個參數是截取幾個的意思;

substring( )

var str = "123abc";
substring()     //開始索引值,結束索引值;
//和slice();一樣
console.log(str3.substring(3));        //從索引值爲3的元素截取到最後  abc
console.log(str3.substring(0,3));    //包左不包右 123
//不一樣:
console.log(str3.substring(-2));    //所有截取 123abc
console.log(str3.substring(3,4));    //智能調換  a (截取索引爲3的第四個字符)
console.log(str3.substring(3,5));    //智能調換  ab (從索引爲3的開始截取到第5個字符)

字符串大小寫轉換

str.toLowerCase();  // 英文字符轉換成小寫;
str.toUpperCase();  // 英文字符轉換成大寫;
//上傳文件的時候用;   由於後綴名,不區分大小寫;

trim( ) 去除字符串先後空白

search( ) 給字符查索引

replace( ) 替換

var str = "Today is a good day, today is a good day.";
//沒法忽略大小寫,並且只能替換一個  Tomorrow is a good day, today is a good day.
console.log(str.replace("Today","Tomorrow"));    
//g: 全局替換;   i: 忽略大小寫!   Tomorrow is a good day, Tomorrow is a good day.
console.log(str.replace(/today/ig,"Tomorrow"));

split( ) 字符串轉化成數組

// split() 和 join() 是一對!
var str = "aaa|bbb|ccc";    //字符串會根據參數被分割成幾部分;變成一個數組;
console.log(str.split("|"));// ["aaa", "bbb", "ccc"] 按 | 進行分割 , 參數不會出如今數組中;
console.log(str.split());    // ["aaa|bbb|ccc"] 不帶參數,總體做爲一個元素;
console.log(str.split(""));    // ["a", "a", "a", "|", "b", "b", "b", "|", "c", "c", "c"] 每個字符都算一個元素;

字符串案例

1.判斷一個字符串中出現次數最多的字符,統計這個次數數組

var str = "abcoefoxyozzopp";
//  a:1,b:1,c:1......   鍵值對;    對象或者json記錄;
//    思路:遍歷字符串中的每個元素,從json/對象中查找.
//    判斷:有的話,值自增1;沒有的話,設置該屬性,值爲1;
    var json = {};//未來往裏面裝屬性和值;{屬性就是字符串中的元素,值就是出現的次數}
    //for循環遍歷
    for(var i=0;i<str.length;i++){
        //判斷:有的話,值自增1;沒有的話,設置該屬性,值爲1;
        var zimu = str.charAt(i);//str裏面的每個字符串;根據i自增能夠獲取到每個
        if(json[zimu] === undefined){//把字符做爲json中的屬性查找,若是爲undefined就說明不存在;
            //沒有就添加一個
            json[zimu] = 1;//給這個屬性,賦值爲1;
        }else{
            //若是存在,就把值在原有基礎上+1;
            json[zimu] += 1;
        }
    }
    console.log(json); // {a: 1, b: 1, c: 1, o: 4, e: 1, …}

2.獲取url中?後面的內容,並轉化成對象的形式。例如:http://www.itaaaaa.com/login?...編碼

var str = "http://wwwaitaaaaa.com/login?name=zs&age=18&a=1&b=2";
    //思路:找到?,而後截取到最末尾;把字符串按照&分割;能夠再次按照=分割,而後建立對象
    var index = str.lastIndexOf("?");
    console.log(index); // 28
    var str2 = str.slice(index+1);
    console.log(str2); // name=zs&age=18&a=1&b=2
    //以&符號分割轉換成數組;
    var arr = str2.split("&");
       console.log(arr); // ["name=zs", "age=18", "a=1", "b=2"]

    var obj = new Object();
    //for循環把數組中的每個元素都遍歷出來,而後前面的作屬性,後面的作值;
    for(var i=0;i<arr.length;i++){
        //把數組中的元素,再次切割,而後根據索引值設置屬性和值;
        var newArr = arr[i].split("=");
        //新數組中的第一個作屬性,第二個作值;
        obj[newArr[0]] = newArr[1];
    }

    console.log(obj); // {name: "zs", age: "18", a: "1", b: "2"}
相關文章
相關標籤/搜索