字符串,JSON

多行,转义以及字符串常见方法

如果要在单引号字符串的内部,使用单引号(双引号同理),就必须在内部的单引号前面加上反斜杠,用来转义

    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 "

字符串默认只能写在一行内,分成多行会报错。如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠

    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); //第一个是开始位置,第二个是结束位置
    console.log(sub2); //el, 长度为第二个参数减去第一个参数
    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"]   返回匹配的数组
  • 字符串大小写转换
    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  原本的字符串不发生改变
  • split()
    var str = 'hello';
    var str1 = str.split(''); //将字符串进行切割,成为数组
    console.log(str1); //  ["h", "e", "l", "l", "o"]
    var str2 = str.split('l');
    console.log(str2); // ["he", "", "o"] 按照l分开 
    //split还可以传入第二个代表长度的参数

0、对于 HTTP 协议而言,HTML、CSS、JS、JSON 的本质都是什么?

为本质上只是符合通信格式的字符串

1、使用数组拼接出如下字符串 ,其中styles数组里的个数不定

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

将获取到的数据转化为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) {
        //使用数组方法
        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'这段字符串很长,如何多行优雅的显示

    var str = 'abcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancdeabcdeabcdeabcdeancde';

    //使用字符串拼接

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

    //使用数组方法
    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);

    // 使用反斜杠\来进行转义
    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、补全如下代码,让输出结果为字符串: hello\\deejay

var str = //补全代码
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

因为字符串中转义的\n换行符也占一个长度空间

5、写一个函数,判断一个字符串是回文字符串,如 abcdcba是回文字符串, abcdcbb不是

    function strReverse (str) {
//        str.split('');//将字符串在每个空字符串处隔开变为数组,即让字符串每个字符为一项构成一个数组,从而可以使用数组的方法
        if (str == str.split('').reverse().join('')) { // 变为数组倒序之后再转化为字符串
            return '传入字符串为回文';
        }
        else {
            return '传入字符串不是回文';
        }
    }
    var result = strReverse('abcdcba');
    console.log(result); // 传入字符串为回文
    var result2 = strReverse('abcdcbb');
    console.log(result2); //传入字符串不是回文

6、写一个函数,统计字符串里出现出现频率最多的字符

    var str = 'hello deejayyyyyyyyyyy';
    
    function repeat(str) {
        var dict = {};//创建一个对象,熟悉设置为dict[str[i]],即str中的每个字符,值设定为每个字符出现的次数
        var maxKey;
        var maxValue = 0;

        for (var i = 0; i < str.length; i ++) {
            if (dict[str[i]] == undefined) {// str[i]即为字符串中的每个字符, dict[str[i]]即将dict的属性设置为字符串中的每个字符
                dict[str[i]] = 1;  // 如果遍历到不存在的属性,则添加到dicr属性中,并且值设为1,即新属性出现过1次了
            }
            else {
                dict[str[i]]++;  // 遍历到存在的属性,出现次数+1,
            }
        }
        for (var key in dict) {  // 得到了属性为str中的每个字符,值为每个对应的字符出现的次数的dict对象,遍历这个dict对象
            if (dict[key] > maxValue) {  //dict[key]即为属性为Key的属性值
                maxValue = dict[key]; //取得最大值,即为字符出现的最大次数
                maxKey = key; //key即为出现次数最多属性值对应的属性
            }
        }
        console.log('出现最多的字符为:'+maxKey,'总共出现了'+maxValue+'次');
    }
    repeat(str); //出现最多的字符为:y 总共出现了11次

7、写一个camelize函数,把my-short-string形式的字符串转化成myShortString形式的字符串,如

camelize("background-color") == 'backgroundColor'
camelize("list-style-image") == 'listStyleImage'
    function camelize(str) {
        var str1 = str.split(''); //转换为数组 以便使用splice方法
        for (var i = 0;i < str1.length; i ++) {
            if (str1[i] == '-') { //遍历数组,有为 - 的项的时候,删除-项以及后面的一项,并且用后面的一项的大写形式来替换
                str1.splice(i,2,str1[i+1].toUpperCase());
            }
        }
        var str2 = str1.join(''); //数组转化为字符串然后输出
        console.log(str2);
    }


    camelize("background-color") == 'backgroundColor'
    camelize("list-style-image") == 'listStyleImage'
    function camelize (str) {
        var str1 = str.split('-'); //将-隔开的字符串变为一项,这些项组成一个数组
        for (var i = 1;i < str1.length; i ++) {
            str1[i] = str1[i][0].toUpperCase() + str1[i].substring(1,str1[i].length);
            //从第二项开始遍历,然后将第二项开始的每一项的第一个字母大写,并且截取后面的内容重新赋值给该项
        }
        var str2 = str1.join(''); //转化为字符串输出
        console.log(str2);
    }


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

8、写一个 ucFirst函数,返回第一个字母为大写的字符 (***)

ucFirst("deejay") == "Deejay"

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

9、写一个函数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格式数据?JSON格式数据如何表示对象?window.JSON 是什么?

  • JSON,即JavaScript Object Notation。是一种轻量级的数据交换格式。
    它是基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集,采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。
    这些特性使JSON成为理想的数据交换语言, 易于人阅读和编写,同时也易于机器解析和生成(网络传输速度)。
    一种模仿JavaScript语法创造的数据的格式,比较香JavaScript里面的对象,但是其本质是一个字符串

JSON语法是JavaScript对象表示语法的子集。

  1. 数据在名称/值对中
  2. 数据由逗号分隔
  3. 花括号保存对象
  4. 方括号保存数组

JSON数据的属性名称必须写在双引号中
示例:

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

11、如何把JSON 格式的字符串转换为 JS 对象?如何把 JS对象转换为 JSON 格式的字符串?

IE以上的浏览器都支持一个JSON对象。
JSON对象有两个静态函数:

  • JSON.parse: 把字符串转换为JSON对象
  • JSON.stringify: 把JSON对象转化为字符串
    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} 为字符串
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

  • .使用数组拼接出如下字符串 var prod = { name: '女装', styles: ['短款', '冬季...
    邢烽朔阅读 431评论 0 0
  • 对于 HTTP 协议而言,HTML、CSS、JS、JSON 的本质都是什么? 符合其对应语法的字符串 使用数组拼接...
    1a659520c6fc阅读 299评论 0 0
  • 0、对于 HTTP 协议而言,HTML、CSS、JS、JSON 的本质都是什么? HTML就是符合HTML语法的字...
    怎么昵称阅读 1,589评论 0 3
  • 新的一年,希望通过一定的努力,把字练好,突破自己的弱点,继续深入了解手机摄影,争取来个半马,无他
    美目盼兮1979阅读 145评论 0 0
  • 不开心
    洁洁姐姐吃吃吃阅读 139评论 0 0