对象方法
++搜索、索引
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 星期五"