繁体   English   中英

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

[英]Is there a python strip function equivalent in javascript?

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

例:

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

输出:

smart kitty

有lodash的trim()

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

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

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

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

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

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

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是作为功能escapeRegExp导正则表达式 Java编程语言有一个标准的库函数用于此目的,但JavaScript没有

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM