對象方法
++搜索、索引
indexOf()
:搜索首個字符串出現的位置
var str = 'hi weianl !哈哈哈';
str.indexOf('h'); // 返回0,從0開始
str.indexOf('i'); // 返回1,首個字符串
str.indexOf('weianl'); // 返回3,空格鍵佔1
str.indexOf('!'); // 返回13,Tab鍵佔4
str.indexOf('233'); //返回-1,未找到
lastIndexOf()
:搜索最後出現的字符串位置
var str = '賞花賞月賞秋香';
str.lastIndexOf('賞')//返回4,下標從左邊0開始數起
includes()
:搜索判斷字符串是否包含指定的子字符串
var str = '哇拷I服了YOU';
str.includes('I')//true
str.includes('i')//區分大小寫false
str.includes('I',3)//指定位置開始搜索,未找到返回false,
charAt()
:搜索返回指定位置的字符
var str = "做人如果沒夢想,跟鹹魚有什麼分別。";
str.charAt(5)//返回'夢'
++截取、提取
substring()
:返回指定索引區間的字符串
substring()返回的字符串是原有的,參數一爲開始下標(必需,一個非負的整數);參數二爲結束下標(可選,一個非負的整數);
var s = '其實我是個演員';
s.substring(0, 2); // 從索引0開始到2(不包括2),返回'其實'
s.substring(5); // 從索引5開始到結束,返回'演員'
s.substring(5,7); // 下標超出後不報錯,返回'演員'
s.substring(2, 0); // 反着寫也可以,返回'其實'
s.substring(2, -1); // 下標爲負數直接忽略爲,返回'其實'
s.substring(-1, 2); // 下標爲負數直接忽略爲,返回'其實'
slice()
:提取字符串的某個部分,並且返回的字符串是新的
slice()返回的字符串是新的,參數一爲開始下標(必需,一個非負的整數);參數二爲結束下標(可選,一個整數,可已是負)
var str='如花!真的是你!';
str.slice(0,3); //從索引0開始到2(不包括2),返回'如花!'
str.slice(3);// 從索引3開始到結束,返回'真的是你!'
str.slice(3,8);//下標超出後不報錯,返回'真的是你!'
str.slice(3,0);//輸出值爲空
str.slice(3,-1);//負數下標從右邊數起,返回'真的是你'
str.slice(-1,3);//輸出值爲空
substr()
:抽取指定下標到指定數目長度的字符串
substr()可傳兩個參數,參數一爲開始下標(如果是負數,那麼該參數聲明從字符串的尾部開始算起的位置);參數二爲截取長度(可選。子串中的字符數,正整數)
var str ='別以爲你長得帥我就不打你';
str.substr(4,3)//從索引4開始取3位,返回'長得帥'
str.substr(-2)//負數下標從右邊數起,返回'打你'
str.substr(-8,3)//,下標負時長度無效了,返回'長得帥我就不打你'
++拼接
concat()
:抽取指定下標到指定數目長度的字符串
var str1 ='你可以叫我跑龍套的,'
var str2 ='但是請不要在前面加個“死”字好不好?'
var str3 ='哼,你個死跑龍套的。'
str1.concat(str2);//返回'你可以叫我跑龍套的,但是請不要在前面加個“死”字好不好?'
str1.concat(str2,str3);//返回'你可以叫我跑龍套的,但是請不要在前面加個“死”字好不好?哼,你個死跑龍套的。'
++替換
replace()
:用一些字符替換另一些字符或替換一個與正則表達式匹配的子串。
var str = '我愛你!如果非要給這份愛加上一個期限,我希望是,一萬年!'
str.replace('我愛你','我鐘意你')
//返回"我鐘意你!如果非要給這份愛加上一個期限,我希望是,一萬年!"
str.replace('一','1')
//只匹配首個,返回"我愛你!如果非要給這份愛加上1個期限,我希望是,一萬年!"
//正則表達
str.replace(/一/g,"1");
//"我愛你!如果非要給這份愛加上1個期限,我希望是,1萬年!"
++轉換
toString()
:返回一個表示 String 對象的值。
//數字轉換爲字符串。
var num=727;
typeof(num) //"number"
num.toString()//"727"字符串
typeof(num.toString())//"string"
//數組轉換成字符串
var fruits = ["Apple","Banana", "Mango","Orange"];
fruits.toString();//返回字符串"Apple,Banana,Mango,Orange"
//進制轉換
var num = 10; //默認10進制數字
num.toString(10)//轉換成十進制,返回字符串"10"
num.toString(2)//轉換成而進制,返回字符串"1010"
num.toString(8)//轉換成八進制,返回字符串"12"
num.toString(16)//轉換成十進制,返回字符串"a"
//toString返回的是字符串,要轉成數字用parseInt(num)
toUpperCase()
:把字符串轉換爲大寫。
var str='WeianL';
str.toUpperCase()//返回'WEIANL'
toLowerCase()
:把字符串轉換爲小寫。
var str='WeianL';
str.toLowerCase()//返回'weianl'
++分割成數組
split()
:把一個字符串分割成字符串數組
//直接分割
var str = '我左青龍,右白虎,老牛在腰間,龍頭在胸口,人擋殺人,佛擋殺佛!'
str.split('')
/*
** 返回
** ["我", "左", "青", "龍", ",", "右", "白", "虎", ","
** ,"老", "牛", "在", "腰", "間", ",", "龍", "頭", "在", "胸", "口", ","
** ,"人", "擋", "殺", "人", ",", "佛", "擋", "殺", "佛", "!"]
*/
//以逗號分割
str.split(',')//返回["我左青龍", "右白虎", "老牛在腰間", "龍頭在胸口", "人擋殺人", "佛擋殺佛!"]
//第二個參數爲返回的長度
str.split(',',2)//返回["我左青龍", "右白虎"]
//以空格分割
var str = '我左青龍 右白虎 老牛在腰間 龍頭在胸口 人擋殺人 佛擋殺佛!'
str.split(' ')//返回["我左青龍", "右白虎", "老牛在腰間", "龍頭在胸口", "人擋殺人", "佛擋殺佛!"]
需要看更多?
++菜鳥教程字符串操作方法合集地址
++w3school字符串操作方法合集地址
練手試題
題目、答案拷自牛客網,答案不是最簡的,不過剛好可以運用到JS對象方法。
++ 字符串字符統計(牛客網)
題目描述:
統計字符串中每個字符的出現頻率,返回一個 Object,key 爲統計字符,value 爲出現頻率
- 不限制 key 的順序
- 輸入的字符串參數不會爲空
- 忽略空白字符
輸入:
‘hello world’
輸出:
{h: 1, e: 1, l: 3, o: 2, w: 1, r: 1, d: 1}
答案:(需要更多?)
function count(str) {
//用正則表達式去除空白符
var newStr = str.replace(/\s/g,"");
//console.log(newStr) //helloworld
var res={};
for(var i=0 ; i<newStr.length; i++){
//循環字符串,判斷是否已存在對象中
if(newStr.charAt(i) in res){
res[newStr.charAt(i)]++;
}
else{
res[newStr.charAt(i)] = 1;
}
}
return res;
}
count('hello world')
++ 時間格式化輸出(牛客網)
題目描述:
按所給的時間格式輸出指定的時間
格式說明
對於 2014.09.05 13:14:20
yyyy: 年份,2014
yy: 年份,14
MM: 月份,補滿兩位,09
M: 月份, 9
dd: 日期,補滿兩位,05
d: 日期, 5
HH: 24制小時,補滿兩位,13
H: 24制小時,13
hh: 12制小時,補滿兩位,01
h: 12制小時,1
mm: 分鐘,補滿兩位,14
m: 分鐘,14
ss: 秒,補滿兩位,20
s: 秒,20
w: 星期,爲 [‘日’, ‘一’, ‘二’, ‘三’, ‘四’, ‘五’, ‘六’] 中的某一個,本 demo 結果爲 五
輸入:
formatDate(new Date(1409894060000), ‘yyyy-MM-dd HH:mm:ss 星期w’)
輸出:
2014-09-05 13:14:20 星期五
答案:(需要更多?)
function formatDate(t,str){
var obj = {
yyyy:t.getFullYear(),
yy:(""+ t.getFullYear()).slice(-2),
M:t.getMonth()+1,
MM:("0"+ (t.getMonth()+1)).slice(-2),
d:t.getDate(),
dd:("0" + t.getDate()).slice(-2),
H:t.getHours(),
HH:("0" + t.getHours()).slice(-2),
h:t.getHours() % 12,
hh:("0"+t.getHours() % 12).slice(-2),
m:t.getMinutes(),
mm:("0" + t.getMinutes()).slice(-2),
s:t.getSeconds(),
ss:("0" + t.getSeconds()).slice(-2),
w:['日', '一', '二', '三', '四', '五', '六'][t.getDay()]
};
return str.replace(/([a-z]+)/ig,function($1){return obj[$1]});
}
formatDate(new Date(1409894060000), 'yyyy-MM-dd HH:mm:ss 星期w')
//"2014-09-05 13:14:20 星期五"