fe-interview
fe-interview copied to clipboard
[js] 第3天 去除字符串中最后一个指定的字符
[js] 第3天 去除字符串中最后一个指定的字符
function delLast (str,del) { if (tpeof str !== 'string') { alert('请确认要删除的对象为字符串!'); retrun false; } else { let index = str.lastIndexOf(del); str.substring(0,index ) + str.substring(index+1,str.length); } } 用的是张震的方法
function trim(str) { if(typeof str === 'string'){ var trimStr = str.substring(0,str.length-1) } return trimStr; }
:dog:
function delLast(str, target) {
return str.split('').reverse().join('').replace(target, '').split('').reverse().join('');
}
const str = delLast('asdfghhj', 'h')
console.log(str) // asdfghj
String.prototype.reverse = function () {
return this.split('').reverse().join('')
}
String.prototype.removeFirstChar = function (m) {
return this.replace(m, '')
}
const string = 'emamam, your string'
const removedChar = 'm'
string.reverse().removeFirstChar(removedChar).reverse()
function delLast(str,target) {
let reg =new RegExp(`${target}(?=([^${target}]*)$)`)
return str.replace(reg,'')
}
怎么开始全是正则????@haizhilin2013
function delLastStr(str, delStr) {
for (let i = str.length - 1; i >= 0; i --) {
if (delStr === str[i]) {
return str.substring(0, i) + str.substring(i+1);
}
}
return str;
}
function delLast(str, target) { return str.split('').reverse().join('').replace(target, '').split('').reverse().join(''); } const str = delLast('asdfghhj', 'h') console.log(str) // asdfghj
1:性能问题 2:太长了
个人见解
var str = "array"
str.substr(0, str .length-1);
str.substring(0, str .length-1);
function del(str, n) {
str = [...str]
const idx = str.lastIndexOf(n);
return str.splice(idx, 1).join('');
}
function delLast (str,del) { if (tpeof str !== 'string') { alert('请确认要删除的对象为字符串!'); retrun false; } else { let index = str.lastIndexOf(del); str.substring(0,index ) + str.substring(index+1,str.length); } } 用的是张震的方法
---楼主typeof打错啦,还有str.substring(0,index ) + str.substring(index+1,str.length);这行应该也要return一下吧,不然成功删除了以后没有返回值
const removeRight = (str, target) => {
if (!str || !target) {
return str;
}
const idx = str.lastIndexOf(target);
if (idx > -1) {
return str.slice(0, idx) + str.slice(idx + 1);
} else {
return str;
}
};
const str = "aaa1 bc de a 2";
console.log(removeRight(str, "e"));
console.log(removeRight(str, "a"));
console.log(removeRight(str, "c"));
思路:循环,从字符串尾部开始移动,直到匹配到的第一个目标字符,将它删除,退出循环,循环结束或退出后,返回字符串。
var filterLast = function(str, del) {
const index = str.lastIndexOf(del);
if(index > -1) {
str = [...str];
str.splice(index, 1);
return str.join('');
}
return str;
}
@undefinedYu 借用了一下你的方法稍作修改,让它能输出 var str = "123456789" function strdelete (str, del) { if (typeof str !== 'string') { return false } else { var index = str.lastIndexOf(del) return str.substring(0,index ) + str.substring(index+1,str.length); } } strdelete(str, "9")
function delString(str, delChar) {
if (!str || typeof str !== 'string' || !delChar || typeof delChar !== 'string') return false;
let arr = str.split('');
let idx = arr.lastIndexOf(delChar);
arr.splice(idx, 1);
return arr.join('');
}
前面有朋友通过[...str]来实现,没考虑到如果不是单一字符的情况吧 我也来添加一个
function removeLastStr(str, dstr) {
var arr = str.split(dstr);
var len = arr.length;
var nArr = [].concat(arr.slice(0, len-2))
nArr.push(arr[len-2]+arr[len-1])
return nArr.join(dstr)
}
lastIndexOf看看最后字的索引,截取即可
function subStrIn(str, value) { if (typeof str !== "string" || typeof value !== "string") { throw new Error("非字符串!"); } let length = str.length; let lastIndex = str.lastIndexOf(value); // 截取 return str.substr(0, lastIndex) + str.substr(lastIndex + 1, length); }
console.log(subStrIn("1234345", "3"));
/**
*
* @param string '字符串'
* @param delItem '删除的字符'
*/
function delLastItem(string,delItem){
let arr = string.split('')
arr.map((item,index)=>{
if(delItem === item){
arr.splice(index,1)
}
})
console.log(136,arr.join(''))
}
delLastItem('12323sdaas2','a') //输出 '12323sdas2'
function deleteSpecifiedLastCharacter(str, char) {
if (!char || typeof str !== 'string' || typeof char !== 'string') return str
return str.replace(new RegExp(`${char}(?=([^${char}]*)$)`), '')
}
var a = (str,s)=>{
var a = str.lastIndexOf(s)
// console.log(a)
// console.log(str.substring(0,a))
// console.log(str.substring(a+1,str.lenth))
console.log(str.substring(0,a)+(str.substring(a+1,str.lenth)))
}
a('abcdefghgh','g')
function delLast(str,target) { let reg =new RegExp(`${target}(?=([^${target}]*)$)`) return str.replace(reg,'') }
delLast('emamam, your string', 'ur') // =>emamam, your string
function delLastStr(str, delStr) {
const reg = new RegExp(`^(.*)(${delStr})(.*)$`)
return str.replace(reg, '$1$3')
}
delLastStr('emamam, your string', 'ur')
// 字符串自带查找字符串最后出现的位置:lastIndexOf
let str = '1 ab c c c ca asdab aaa'
console.log((function (str, keyword) {
let index = str.lastIndexOf(keyword)
return index === -1 ? str : str.slice(0, index) + str.slice(index + keyword.length)
})(str, 'ab'))
function removeLastAppearedChar ( string = ``, char = `` ) {
return string.replace( new RegExp( `${ char }(?=[^${ char }]*$)`, `u` ), `` );
}
function removeLastAppearedChar ( string = ``, char = `` ) {
const index = string.lastIndexOf( char );
return -1 < index ?
string.slice( 0, index ) + string.slice( index + 1 ) :
string;
}
function removeLast(str,k){
return str.slice(0,str.lastIndexOf(k)) + str.slice(str.lastIndexOf(k)+1)
}
const removeLastStr = (str, target) => {
if (!str || !target) {
return str;
}
if(typeof str !== 'string'){
alert('输入的对象不是字符串!');
return false;
}
const idx = str.lastIndexOf(target);
if (idx > -1) {
return str.slice(0, idx) + str.slice(idx + 1);
} else {
return str;
}
};
String.prototype.splitStringLastChar = function(s) {
let len = this.length - 1;
for(; len >= 0; len--) {
if(this[len] === s) {
return this.slice(0,len) + this.slice(len+1,this.length)
}
}
return this.toString();
}
let arr = 'you are my uu' arr.split('').reverse().join('').replace('u','').split('').reverse().join('')