Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中是否有与python strip等效的函数?_Javascript_Python - Fatal编程技术网

javascript中是否有与python strip等效的函数?

javascript中是否有与python strip等效的函数?,javascript,python,Javascript,Python,Python的strip函数用于从字符串的开头和结尾删除给定字符。如何在javascript中创建类似的函数 例如: str = "'^$ *# smart kitty & ''^$* '^"; newStr = str.strip(" '^$*#&"); console.log(newStr); 输出: smart kitty 不完全是。。。我将使用regex进行复杂的字符串操作,或者使用Slice()方法删除某些点上的字符 一种简单但不是很有效的方法是查找字符并

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

例如:

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

smart kitty

不完全是。。。我将使用regex进行复杂的字符串操作,或者使用Slice()方法删除某些点上的字符
一种简单但不是很有效的方法是查找字符并将其删除:

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

注意:我转义了正则表达式中所有具有特殊含义的字符。对于某些字符,您需要这样做,但可能不是我在这里转义的所有字符,因为它们在集合中使用。这主要是为了指出某些字符确实需要转义。

修改中的代码段,您可以定义如下函数

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()的比较

escapeegexp
的值与中的函数
escapeegexp
相同。Java编程语言有一个用于此目的的标准库函数,但是有lodash的

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


我知道,我可以使用类似于
str.replace(/(^\s*&)|(&\s*$)/g,”)
的东西来删除
&
的前面和后面的实例。但是如果有几个字符,正则表达式会是什么呢?顺便说一句,Python代码实际上不应该调用变量
str
,因为它隐藏了相同名称的类型/函数的名称。你知道在正则表达式中有什么吗?查找
$
*
\
&
中任何一个实例的方法,而不仅仅是使用
&
的任何实例,是使用字符类
[$*\\\\\
@abarnert。我编写了一个javascript代码。它对我来说是一个临时解决方案。你能解释一下第一个方法为什么无效吗?这是因为它的代码行较多,可读性和效率都不高。这是一个很好的答案。但值得解释的是OP似乎缺少的部分他知道如何使用regexp在开始和结束时剥离
&
,他只是显然不知道如何使用字符类剥离任何
[*#&]
。你的回答解决了这个问题,但没有解释它与他的尝试有什么不同。修改为在字符串参数中获取要剥离的字符。
_.trim('  abc  ');             // → 'abc'

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