在javascript中有一个等效的python strip函数吗?

时间:2014-01-02 19:51:19

标签: javascript python

Python的strip函数用于从字符串的开头和结尾删除给定的字符。如何在javascript中创建类似的功能?

示例:

str = "'^$   *# smart kitty &  ''^$*   '^";
newStr = str.strip(" '^$*#&");
console.log(newStr);

输出:

smart kitty

4 个答案:

答案 0 :(得分:5)

有lodash的trim()

  

从字符串中删除前导和尾随空格或指定的字符。

_.trim('  abc  ');             // → 'abc'

_.trim('-_-abc-_-', '_-');     // → 'abc'

答案 1 :(得分:4)

一种简单但不是很有效的方法是查找字符并将其删除:

function strip(str, remove) {
  while (str.length > 0 && remove.indexOf(str.charAt(0)) != -1) {
    str = str.substr(1);
  }
  while (str.length > 0 && remove.indexOf(str.charAt(str.length - 1)) != -1) {
    str = str.substr(0, str.length - 1);
  }
  return str;
}

更有效但不易使用的是正则表达式:

str = str.replace(/(^[ '\^\$\*#&]+)|([ '\^\$\*#&]+$)/g, '')

注意:我在正则表达式中转义了所有具有任何特殊含义的字符。你需要为某些角色做到这一点,但也许不是我在这里逃脱的所有角色,因为它们在一个集合中使用。这主要是指出一些角色确实需要逃脱。

答案 2 :(得分:2)

修改Mozilla Developer Network String.prototype.trim()的代码段,您可以定义如下函数。

if (!String.prototype.strip) {
  String.prototype.strip = function (string) {
    var escaped = string.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1");
    return this.replace(RegExp("^[" + escaped + "]+|[" + escaped + "]+$", "gm"), '');
  };
}

将此函数放在对象String.prototype中没有必要也可能不可取,但它确实可以清楚地表明这样的函数与现有String.prototype.trim()的比较。

escaped的值与guide to Regular Expressions中的escapeRegExp函数相同。 Java编程语言具有用于此目的的标准库函数,但是JavaScript does not

答案 3 :(得分:1)

不完全......我会使用正则表达式进行复杂的字符串操作或使用Slice()方法删除某些点上的字符 Slice() explained