前端常见的字符串操作面试题
一、字符串去重
var str = "ahahggagsssjjj";
function removeRepeat(msg){
var res = [];
var arr = msg.split("");
for(var i=0;i<arr.length;i++){
if(res.indexOf(arr[i])==-1){
res.push(arr[i]);
}
}
return res.join("");
}
removeRepeat(str); // 返回值为: "ahgsj"
二、判断字符串中字符出现的次数
/*
思路:
1.先实现字符串去重,并且以数组的形式返回
2.然后对去重后的数组用for循环操作,分别与原始数组中各个值进行比较,
如果相等则count++,循环结束将count保存在sum数组中,然后将count重置为0
3.这样一来去重后的数组中的元素在原数组中出现的次数与sum数组中的元素是一一对应的
*/
var str = "abccacbbdeaedcd";
var sum = [];
var res = [];
var count = 0;
var arr = str.split("");
for(var i=0;i<arr.length;i++){
if(res.indexOf(arr[i])==-1){
res.push(arr[i]);
}
}
for(var i=0;i<res.length;i++){
for(var j=0;j<arr.length;j++){
if(arr[j]==res[i]){
count++;
}
}
sum.push(count);
count = 0;
}
console.log(res); //返回值为:["a", "b", "c", "d", "e"] 去重后的数组
for(var i=0;i<res.length;i++){
var str=(sum[i]%2==0)?"偶数":"奇数";
console.log(res[i]+"出现了"+sum[i]+"次");
console.log(res[i]+"出现了"+str+"次");
}
三、字符串反向输出
(1).最笨、最原始的方法(利用字符串和数组函数交替转换输出)
var str = 'abcdefg';
var str1 = str.split(""); //将字符串分割,并以数组形式返回
var str2 = str1.reverse(); //利用数组函数reverse()将数组中的元素反向输出
var str3 = str2.toString(); //将数组类型转换为字符串类型
var str4 = str3.replace(/,/g,""); //利用字符串函数replace()去掉','字符
console.log(str4); //返回值为:gfedcba
/*上述方法可简写为: */
var str = 'abcdefg';
var str1 = str.split("").reverse().toString().replace(/,/g,"");
console.log(str1); //返回值为:gfedcba
(2).利用字符串函数组合实现
var str = 'abcdefg';
var str1 = str.split('').reverse().join('');
console.log(str1); //返回值为:gfedcba
(3).利用for循环方式
var str = 'abcdefg';
var i = str.length;
var i = i-1;
for (var str = i; str >=0; str--) {
document.write(str.charAt(str));
}
//返回值为:gfedcba
如有错误之处欢迎留言!