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