5赞
440
当前位置:  开发笔记 > 编程语言 > 正文

如何删除字符串周围的特定字符?

如何解决《如何删除字符串周围的特定字符?》经验,为你挑选了2个好方法。

我有这个字符串:

var str = "? this is a ? test ?";

现在我想得到这个:

var newstr = "this is a ? test";

如你所见,我想删除那些?周围(在开头和结尾)那个字符串(不在字符串中间).怎么用Javascript?

这是我尝试过的:

var str = "? this is a ? test ?";
var result = str.trim("?");
document.write(result);

所以,正如你所看到它不起作用.实际上我是一名PHP开发人员,trim()并且在PHP中运行良好.现在我想知道我是否可以trim()在JS中使用它.


应该注意我可以使用正则表达式来做到这一点,但说实话,我讨厌这种工作的正则表达式.无论如何还有更好的解决方案吗?


编辑:正如评论中提到的那样,我需要删除?字符串周围的两个和空格.



1> Nina Scholz..:

搜索字符掩码并返回其余部分.

此提议使用按位运算 ~符进行检查.

~是一个按位运算符.它非常适合使用indexOf(),因为indexOf如果找到索引0 ... n则返回,如果没有-1:

value  ~value   boolean
 -1  =>   0  =>  false
  0  =>  -1  =>  true
  1  =>  -2  =>  true
  2  =>  -3  =>  true
  and so on 

function trim(s, mask) {
    while (~mask.indexOf(s[0])) {
        s = s.slice(1);
    }
    while (~mask.indexOf(s[s.length - 1])) {
        s = s.slice(0, -1);
    }
    return s;
}

console.log(trim('??? this is a ? test ?', '? '));
console.log(trim('abc this is a ? test abc', 'cba '));


2> Arjan..:

一种可能的解决方案是使用递归函数来删除不需要的前导和尾随字符.这不使用正则表达式.

function ltrim(char, str) {
    if (str.slice(0, char.length) === char) {
        return ltrim(char, str.slice(char.length));
    } else {
        return str;
    }
}

function rtrim(char, str) {
    if (str.slice(str.length - char.length) === char) {
        return rtrim(char, str.slice(0, 0 - char.length));
    } else {
        return str;
    }
}

当然,这只是众多可能解决方案中的一种.该函数trim将使用ltrimrtrim.

char一个参数和第二个需要清理的字符串的原因是为了更容易将其更改为函数式编程样式函数,如此(ES 2015):

function ltrim(char) {
    (str) => {
        
    }
}

// No need to specify str here
function ltrimSpaces = ltrim(' ');


推荐阅读
author-avatar
瓜子HR刘冲
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有