fe-interview icon indicating copy to clipboard operation
fe-interview copied to clipboard

[js] 第3天 去除字符串中最后一个指定的字符

Open haizhilin2013 opened this issue 5 years ago • 121 comments

[js] 第3天 去除字符串中最后一个指定的字符

haizhilin2013 avatar Apr 18 '19 21:04 haizhilin2013

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); } } 用的是张震的方法

undefinedYu avatar Apr 19 '19 05:04 undefinedYu

function trim(str) { if(typeof str === 'string'){ var trimStr = str.substring(0,str.length-1) } return trimStr; }

yxkhaha avatar Apr 19 '19 14:04 yxkhaha

:dog:

function delLast(str, target) {
  return str.split('').reverse().join('').replace(target, '').split('').reverse().join('');
}

const str = delLast('asdfghhj', 'h')

console.log(str) // asdfghj 

linghucq1 avatar May 08 '19 07:05 linghucq1

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()

tzjoke avatar May 16 '19 11:05 tzjoke

function delLast(str,target) {
  let reg =new RegExp(`${target}(?=([^${target}]*)$)`)
  return str.replace(reg,'')
}

XIGUATANG avatar Jun 03 '19 08:06 XIGUATANG

怎么开始全是正则????@haizhilin2013

myprelude avatar Jun 13 '19 08:06 myprelude

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;

}

AricZhu avatar Jun 18 '19 01:06 AricZhu

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:太长了

个人见解

Damon99999 avatar Jun 18 '19 01:06 Damon99999

var str = "array" str.substr(0, str .length-1); str.substring(0, str .length-1);

Damon99999 avatar Jun 18 '19 01:06 Damon99999

function del(str, n) {
	str = [...str]
	const idx = str.lastIndexOf(n);
	return str.splice(idx, 1).join('');
}

bWhirring avatar Jun 29 '19 16:06 bWhirring

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一下吧,不然成功删除了以后没有返回值

Raonet avatar Jul 01 '19 04:07 Raonet

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"));

Konata9 avatar Jul 01 '19 05:07 Konata9

思路:循环,从字符串尾部开始移动,直到匹配到的第一个目标字符,将它删除,退出循环,循环结束或退出后,返回字符串。

DarthVaderrr avatar Jul 03 '19 07:07 DarthVaderrr

var filterLast = function(str, del) {
    const index = str.lastIndexOf(del);
    if(index > -1) {
        str = [...str];
        str.splice(index, 1);
        return str.join('');
    }
    return str;
}

zhuoyan avatar Jul 04 '19 02:07 zhuoyan

@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")

15190408121 avatar Jul 04 '19 02:07 15190408121

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('');
  }

poporeki avatar Jul 04 '19 14:07 poporeki

前面有朋友通过[...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)
}

jiuylq avatar Jul 06 '19 17:07 jiuylq

lastIndexOf看看最后字的索引,截取即可

seho-dev avatar Jul 12 '19 04:07 seho-dev

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"));

seho-dev avatar Jul 12 '19 05:07 seho-dev

        /**
         *
         * @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'

zhoufanglu avatar Jul 15 '19 01:07 zhoufanglu

function deleteSpecifiedLastCharacter(str, char) {
  if (!char || typeof str !== 'string' || typeof char !== 'string') return str
  return str.replace(new RegExp(`${char}(?=([^${char}]*)$)`), '')
}

shufangyi avatar Jul 18 '19 02:07 shufangyi

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') 

slnzzl avatar Jul 23 '19 07:07 slnzzl

function delLast(str,target) {
  let reg =new RegExp(`${target}(?=([^${target}]*)$)`)
  return str.replace(reg,'')
}

delLast('emamam, your string', 'ur') // =>emamam, your string

anncwb avatar Jul 25 '19 03:07 anncwb

function delLastStr(str, delStr) {
  const reg = new RegExp(`^(.*)(${delStr})(.*)$`)
  return str.replace(reg, '$1$3')
}

delLastStr('emamam, your string', 'ur')

gu-xionghong avatar Jul 25 '19 08:07 gu-xionghong

// 字符串自带查找字符串最后出现的位置: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'))

ZhaoYu8 avatar Jul 26 '19 06:07 ZhaoYu8

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;
}

IanSun avatar Jul 26 '19 07:07 IanSun

function removeLast(str,k){
  return str.slice(0,str.lastIndexOf(k)) + str.slice(str.lastIndexOf(k)+1)
}

AchillesV avatar Jul 26 '19 08:07 AchillesV


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;
  }
};

wsb260 avatar Jul 30 '19 06:07 wsb260

        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();
        }

zhangkuibao avatar Aug 10 '19 02:08 zhangkuibao

let arr = 'you are my uu' arr.split('').reverse().join('').replace('u','').split('').reverse().join('')

LJH520 avatar Aug 13 '19 06:08 LJH520