多行,轉(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對象表示語法的子集匕争。
- 數(shù)據(jù)在名稱/值對中
- 數(shù)據(jù)由逗號分隔
- 花括號保存對象
- 方括號保存數(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} 為字符串