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常用的数组操作对象方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值