JavaScript常用的字符串操作對象方法

對象方法

++搜索、索引

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 爲出現頻率

  1. 不限制 key 的順序
  2. 輸入的字符串參數不會爲空
  3. 忽略空白字符

輸入:

‘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 星期五"

項目中遇到過

JS查詢字符串的某幾個字給它添加樣式、標籤、字符串

數組操作對象方法

JavaScript常用的數組操作對象方法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章