字符串苛预,JSON

多行,轉(zhuǎn)義以及字符串常見方法

如果要在單引號字符串的內(nèi)部句狼,使用單引號(雙引號同理),就必須在內(nèi)部的單引號前面加上反斜杠热某,用來轉(zhuǎn)義腻菇。

    var str = 'did she say \' hello \'';
    console.log(str); //did she say ' hello '
    var str1 = "did she say \" hello \"";
    console.log(str1); //did she say " hello "

字符串默認(rèn)只能寫在一行內(nèi),分成多行會報錯昔馋。如果長字符串必須分成多行筹吐,可以在每一行的尾部使用反斜杠

    var longStr = 'long \
    long\
    long\
    string';
    console.log(longStr); //long     long    long    string
  • 字符串的截取
    var str = 'hello,world';
    var sub1 = str.substr(1,3); //第一個是開始位置秘遏,第二個是長度
    console.log(sub1); //ell
    var sub2 = str.substring(1,3); //第一個是開始位置丘薛,第二個是結(jié)束位置
    console.log(sub2); //el, 長度為第二個參數(shù)減去第一個參數(shù)
    var sub3 = str.slice(1,3);
    console.log(sub3); //el 同subString()
    console.log(str); //hello,world  原本的字符串是保持不變的
  • 字符串的查找
    var str = 'hello my world';
    var str1 = str.search('my');
    console.log(str1); // 6  查找不到的話返回-1
    var str2 = str.replace('my','your');
    console.log(str2); //hello your world 替換
    var str3 = str.match('my');
    console.log(str3); //["my", index: 6, input: "hello my world"]   返回匹配的數(shù)組
  • 字符串大小寫轉(zhuǎn)換
    var str = 'Hello DeeJay';
    var str1 = str.toUpperCase();
    console.log(str1); //HELLO DEEJAY
    var str2 = str.toLowerCase();
    console.log(str2); //hello deejay
    console.log(str);  //Hello DeeJay  原本的字符串不發(fā)生改變
  • split()
    var str = 'hello';
    var str1 = str.split(''); //將字符串進(jìn)行切割,成為數(shù)組
    console.log(str1); //  ["h", "e", "l", "l", "o"]
    var str2 = str.split('l');
    console.log(str2); // ["he", "", "o"] 按照l分開 
    //split還可以傳入第二個代表長度的參數(shù)

0垄提、對于 HTTP 協(xié)議而言榔袋,HTML、CSS铡俐、JS凰兑、JSON 的本質(zhì)都是什么?

為本質(zhì)上只是符合通信格式的字符串审丘。

1吏够、使用數(shù)組拼接出如下字符串 ,其中styles數(shù)組里的個數(shù)不定

var prod = {
    name: '女裝',
    styles: ['短款', '冬季', '春裝']
};
function getTpl(data){
//todo...
};
var result = getTplStr(prod);  //result為下面的字符串

將獲取到的數(shù)據(jù)轉(zhuǎn)化為html字符串:

    var prod = {
        name: '女裝',
        styles: ['短款', '冬季', '春裝']
    };
    function getTpl(data){
        //使用字符串拼接
        var str ='';
        str += '<ul>';
        str += '<li>' + data.name + '</li>';
        for (var i = 0; i < data.styles.length; i ++) {
            str += '<li>'+ data.styles[i] + '</li>';
        }
        str += '</ul>';
        return str;
    };
    function getTpl2(data) {
        //使用數(shù)組方法
        var arr = [];
        arr.push('<ul>');
        arr.push('<li>' + data.name + '</li>');
        for (var i = 0; i < data.styles.length; i ++) {
            arr.push('<li>' + data.styles[i] + '</li>');
        }
        arr.push('</ul>');
        return arr.join(' ');
    }
    var result = getTpl(prod);
    var result2 = getTpl2(prod);
    console.log(result);
    console.log(result2);

2、寫出兩種以上聲明多行字符串的方法

例如var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde'這段字符串很長锅知,如何多行優(yōu)雅的顯示

    var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde';

    //使用字符串拼接

    var str1 = '';
    str1 = '<ul>';
    str1 += '   <li>' + 'abcdeabcdeabcdeancdeabcd' + '</li>';
    str1 += '   <li>' + 'abcdeabcdeabcdeancdeabcd' + '</li>';
    str1 += '   <li>' + 'abcdeabcdeabcdeancdeabcd' + '</li>';
    str1 += '</ul>';
    console.log(str1);

    //使用數(shù)組方法
    var str2 = [];
    str2.push('<ul>');
    str2.push('<li>' + 'abcdeabcdeabcdeancdeabcd' + '</li>');
    str2.push('<li>' + 'abcdeabcdeabcdeancdeabcd' + '</li>');
    str2.push('<li>' + 'abcdeabcdeabcdeancdeabcd' + '</li>');
    str2.push('</ul>');
    str2 = str2.join('  ');
    console.log(str2);

    // 使用反斜杠\來進(jìn)行轉(zhuǎn)義
    var str3 =
    '<ul>\
         <li>abcdeabcdeabcdeancdeabcd</li>\
         <li>abcdeabcdeabcdeancdeabcd</li>\
         <li>abcdeabcdeabcdeancdeabcd</li>\
    </ul>';
    console.log(str3);

    // 使用ES6語法 `` 來聲明字符串
    var str4 =
            `<ul>
                <li>abcdeabcdeabcdeancdeabcd</li>
                <li>abcdeabcdeabcdeancdeabcd</li>
                <li>abcdeabcdeabcdeancdeabcd</li>
            </ul>`;
    console.log(str4);

針對多行JS字符串:

    var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde';

    var str1 = 'abcdeabcdeabcdeancd\
    abcdeabcdeabcdeancd\
    abcdeabcdeabcdeancd\
    ';
    console.log(str1);
    var str2 = `abcdeabcdeabcdeancd
    abcdeabcdeabcdeancd
    abcdeabcdeabcdeancd`;
    console.log(str2);

3播急、補(bǔ)全如下代碼,讓輸出結(jié)果為字符串: hello\\deejay

var str = //補(bǔ)全代碼
console.log(str)
    var str = 'hello \\\\deejay';
    console.log(str) //輸出hello \\deejay

4.以下代碼輸出什么?為什么

    var str = 'hello\ndeejay'
    console.log(str.length);
    var str = 'hello\ndeejay'
    console.log(str.length); // 輸出12

因為字符串中轉(zhuǎn)義的\n換行符也占一個長度空間

5、寫一個函數(shù)售睹,判斷一個字符串是回文字符串桩警,如 abcdcba是回文字符串, abcdcbb不是

    function strReverse (str) {
//        str.split('');//將字符串在每個空字符串處隔開變?yōu)閿?shù)組,即讓字符串每個字符為一項構(gòu)成一個數(shù)組昌妹,從而可以使用數(shù)組的方法
        if (str == str.split('').reverse().join('')) { // 變?yōu)閿?shù)組倒序之后再轉(zhuǎn)化為字符串
            return '傳入字符串為回文';
        }
        else {
            return '傳入字符串不是回文';
        }
    }
    var result = strReverse('abcdcba');
    console.log(result); // 傳入字符串為回文
    var result2 = strReverse('abcdcbb');
    console.log(result2); //傳入字符串不是回文

6捶枢、寫一個函數(shù),統(tǒng)計字符串里出現(xiàn)出現(xiàn)頻率最多的字符

    var str = 'hello deejayyyyyyyyyyy';
    
    function repeat(str) {
        var dict = {};//創(chuàng)建一個對象飞崖,熟悉設(shè)置為dict[str[i]],即str中的每個字符烂叔,值設(shè)定為每個字符出現(xiàn)的次數(shù)
        var maxKey;
        var maxValue = 0;

        for (var i = 0; i < str.length; i ++) {
            if (dict[str[i]] == undefined) {// str[i]即為字符串中的每個字符, dict[str[i]]即將dict的屬性設(shè)置為字符串中的每個字符
                dict[str[i]] = 1;  // 如果遍歷到不存在的屬性,則添加到dicr屬性中固歪,并且值設(shè)為1蒜鸡,即新屬性出現(xiàn)過1次了
            }
            else {
                dict[str[i]]++;  // 遍歷到存在的屬性,出現(xiàn)次數(shù)+1牢裳,
            }
        }
        for (var key in dict) {  // 得到了屬性為str中的每個字符逢防,值為每個對應(yīng)的字符出現(xiàn)的次數(shù)的dict對象,遍歷這個dict對象
            if (dict[key] > maxValue) {  //dict[key]即為屬性為Key的屬性值
                maxValue = dict[key]; //取得最大值贰健,即為字符出現(xiàn)的最大次數(shù)
                maxKey = key; //key即為出現(xiàn)次數(shù)最多屬性值對應(yīng)的屬性
            }
        }
        console.log('出現(xiàn)最多的字符為:'+maxKey,'總共出現(xiàn)了'+maxValue+'次');
    }
    repeat(str); //出現(xiàn)最多的字符為:y 總共出現(xiàn)了11次

7胞四、寫一個camelize函數(shù),把my-short-string形式的字符串轉(zhuǎn)化成myShortString形式的字符串伶椿,如

camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'
    function camelize(str) {
        var str1 = str.split(''); //轉(zhuǎn)換為數(shù)組 以便使用splice方法
        for (var i = 0;i < str1.length; i ++) {
            if (str1[i] == '-') { //遍歷數(shù)組辜伟,有為 - 的項的時候,刪除-項以及后面的一項脊另,并且用后面的一項的大寫形式來替換
                str1.splice(i,2,str1[i+1].toUpperCase());
            }
        }
        var str2 = str1.join(''); //數(shù)組轉(zhuǎn)化為字符串然后輸出
        console.log(str2);
    }


    camelize("background-color") == 'backgroundColor'
    camelize("list-style-image") == 'listStyleImage'
    function camelize (str) {
        var str1 = str.split('-'); //將-隔開的字符串變?yōu)橐豁椀冀疲@些項組成一個數(shù)組
        for (var i = 1;i < str1.length; i ++) {
            str1[i] = str1[i][0].toUpperCase() + str1[i].substring(1,str1[i].length);
            //從第二項開始遍歷,然后將第二項開始的每一項的第一個字母大寫偎痛,并且截取后面的內(nèi)容重新賦值給該項
        }
        var str2 = str1.join(''); //轉(zhuǎn)化為字符串輸出
        console.log(str2);
    }


    camelize("background-color") // 'backgroundColor'
    camelize("list-style-image") // 'listStyleImage'

8旱捧、寫一個 ucFirst函數(shù),返回第一個字母為大寫的字符 (***)

ucFirst("deejay") == "Deejay"

    function ucFirst(str) {
        console.log(str[0].toUpperCase() + str.substring(1,str.length));
    }
    ucFirst('deejay'); //Deejay

9踩麦、寫一個函數(shù)truncate(str, maxlength), 如果str的長度大于maxlength枚赡,會把str截斷到maxlength長,并加上...谓谦,如

truncate("hello, this is hunger valley,", 10) == "hello, thi...";
truncate("hello world", 20) == "hello world"
    function truncate (str,max) {
        if (str.length > max) {
            str = str.substring(0,max) + '...';
        }
        console.log(str);
    }
    truncate("hello, this is deejay,", 10) // "hello, thi...";
    truncate("hello world", 20) // "hello world"

10贫橙、什么是 JSON格式數(shù)據(jù)?JSON格式數(shù)據(jù)如何表示對象反粥?window.JSON 是什么卢肃?

  • JSON疲迂,即JavaScript Object Notation。是一種輕量級的數(shù)據(jù)交換格式莫湘。
    它是基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一個子集尤蒿,采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)幅垮。
    這些特性使JSON成為理想的數(shù)據(jù)交換語言腰池, 易于人閱讀和編寫,同時也易于機(jī)器解析和生成(網(wǎng)絡(luò)傳輸速度)忙芒。
    一種模仿JavaScript語法創(chuàng)造的數(shù)據(jù)的格式巩螃,比較香JavaScript里面的對象,但是其本質(zhì)是一個字符串

JSON語法是JavaScript對象表示語法的子集匕争。

  1. 數(shù)據(jù)在名稱/值對中
  2. 數(shù)據(jù)由逗號分隔
  3. 花括號保存對象
  4. 方括號保存數(shù)組

JSON數(shù)據(jù)的屬性名稱必須寫在雙引號中
示例:

    var json1 = {
        "name": "deejay",
        "age": 21,
        "sex": "male",
    }
    var jason2 = [
        {"name": "deejay","age": 21},
        {"name": "dee","age": 22}    
    ]

11爷耀、如何把JSON 格式的字符串轉(zhuǎn)換為 JS 對象甘桑?如何把 JS對象轉(zhuǎn)換為 JSON 格式的字符串?

IE以上的瀏覽器都支持一個JSON對象。
JSON對象有兩個靜態(tài)函數(shù):

  • JSON.parse: 把字符串轉(zhuǎn)換為JSON對象
  • JSON.stringify: 把JSON對象轉(zhuǎn)化為字符串
    var str = '{"name": "deejay", "age": 21}';
    var strParse = JSON.parse(str);
    console.log(strParse.name); //deejay
    var obj = {
        name: "deejay",
        age: 21
    }
    console.log(JSON.stringify(obj)); //{"name":"deejay","age":21} 為字符串
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末歹叮,一起剝皮案震驚了整個濱河市跑杭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咆耿,老刑警劉巖德谅,帶你破解...
    沈念sama閱讀 222,378評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異萨螺,居然都是意外死亡窄做,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評論 3 399
  • 文/潘曉璐 我一進(jìn)店門慰技,熙熙樓的掌柜王于貴愁眉苦臉地迎上來椭盏,“玉大人,你說我怎么就攤上這事吻商√图眨” “怎么了?”我有些...
    開封第一講書人閱讀 168,983評論 0 362
  • 文/不壞的土叔 我叫張陵艾帐,是天一觀的道長乌叶。 經(jīng)常有香客問我,道長柒爸,這世上最難降的妖魔是什么准浴? 我笑而不...
    開封第一講書人閱讀 59,938評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮揍鸟,結(jié)果婚禮上兄裂,老公的妹妹穿的比我還像新娘句旱。我一直安慰自己,他們只是感情好晰奖,可當(dāng)我...
    茶點故事閱讀 68,955評論 6 398
  • 文/花漫 我一把揭開白布谈撒。 她就那樣靜靜地躺著,像睡著了一般匾南。 火紅的嫁衣襯著肌膚如雪啃匿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,549評論 1 312
  • 那天蛆楞,我揣著相機(jī)與錄音溯乒,去河邊找鬼。 笑死豹爹,一個胖子當(dāng)著我的面吹牛裆悄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播臂聋,決...
    沈念sama閱讀 41,063評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼光稼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了孩等?” 一聲冷哼從身側(cè)響起艾君,我...
    開封第一講書人閱讀 39,991評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肄方,沒想到半個月后冰垄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,522評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡权她,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,604評論 3 342
  • 正文 我和宋清朗相戀三年虹茶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隅要。...
    茶點故事閱讀 40,742評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡写烤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拾徙,到底是詐尸還是另有隱情洲炊,我是刑警寧澤,帶...
    沈念sama閱讀 36,413評論 5 351
  • 正文 年R本政府宣布尼啡,位于F島的核電站暂衡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏崖瞭。R本人自食惡果不足惜狂巢,卻給世界環(huán)境...
    茶點故事閱讀 42,094評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望书聚。 院中可真熱鬧唧领,春花似錦藻雌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至受啥,卻和暖如春做个,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背滚局。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評論 1 274
  • 我被黑心中介騙來泰國打工居暖, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人藤肢。 一個月前我還...
    沈念sama閱讀 49,159評論 3 378
  • 正文 我出身青樓太闺,卻偏偏與公主長得像,于是被迫代替她去往敵國和親嘁圈。 傳聞我的和親對象是個殘疾皇子跟束,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,747評論 2 361

推薦閱讀更多精彩內(nèi)容

  • .使用數(shù)組拼接出如下字符串 var prod = { name: '女裝', styles: ['短款', '冬季...
    邢烽朔閱讀 437評論 0 0
  • 對于 HTTP 協(xié)議而言,HTML灭贷、CSS温学、JS、JSON 的本質(zhì)都是什么甚疟? 符合其對應(yīng)語法的字符串 使用數(shù)組拼接...
    1a659520c6fc閱讀 308評論 0 0
  • 0仗岖、對于 HTTP 協(xié)議而言,HTML览妖、CSS轧拄、JS、JSON 的本質(zhì)都是什么讽膏? HTML就是符合HTML語法的字...
    怎么昵稱閱讀 1,605評論 0 3
  • 新的一年檩电,希望通過一定的努力,把字練好府树,突破自己的弱點俐末,繼續(xù)深入了解手機(jī)攝影,爭取來個半馬奄侠,無他
    美目盼兮1979閱讀 150評論 0 0
  • 不開心
    潔潔姐姐吃吃吃閱讀 140評論 0 0