Python的strip函数用于从字符串的开头和结尾删除给定的字符。如何在javascript中创建类似的功能?
示例:
str = "'^$ *# smart kitty & ''^$* '^";
newStr = str.strip(" '^$*#&");
console.log(newStr);
输出:
smart kitty
答案 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