Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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 从字符串的开头和结尾删除特殊字符_Javascript - Fatal编程技术网

Javascript 从字符串的开头和结尾删除特殊字符

Javascript 从字符串的开头和结尾删除特殊字符,javascript,Javascript,我正在寻找一种更漂亮的方法来删除一些特殊字符{}[]*?!^:|&/\~如果它们存在于名为query的字符串的第一个和最后一个位置。我的方法很难看,但很管用 虽然 query.charAt1==:|| query.charAt1=={|| query.charAt1==}|| query.charAt1==[|| query.charAt1==]|| query.charAt1==*|| query.charAt1==-|| query.charAt1==^|| query.charAt1==|

我正在寻找一种更漂亮的方法来删除一些特殊字符{}[]*?!^:|&/\~如果它们存在于名为query的字符串的第一个和最后一个位置。我的方法很难看,但很管用

虽然 query.charAt1==:|| query.charAt1=={|| query.charAt1==}|| query.charAt1==[|| query.charAt1==]|| query.charAt1==*|| query.charAt1==-|| query.charAt1==^|| query.charAt1==|| query.charAt1==|| query.charAt1==||| query.charAt1==“”|| query.charAt1==/|| query.charAt1==\u|| query.charAt1==“”|| query.charAt1==~ { query=query.1; } 虽然 query.charAtquery.length-1==|| query.charAtquery.length-1==:|| query.charAtquery.length-1=={|| query.charAtquery.length-1==}|| query.charAtquery.length-1==[|| query.charAtquery.length-1==]|| query.charAtquery.length-1==*|| query.charAtquery.length-1==|| query.charAtquery.length-1==^|| query.charAtquery.length-1==|| query.charAtquery.length-1==|| query.charAtquery.length-1==||| query.charAtquery.length-1==&|| query.charAtquery.length-1==“”|| query.charAtquery.length-1==/|| query.charAtquery.length-1==\\|| query.charAtquery.length-1==~ { query=query.0,-1; }
请改用正则表达式:

query = query.replace(/^[-:{}[\]*^()|"]+|[-:{}[\]*^()|"]+$/g, '');
该模式由以下部分组成:

^[CHARS]+|[CHARS]+$
其中,字符是要删除的字符

^[字符]+-匹配字符串开头的一个或多个字符

|或匹配

[CHARS]+$-字符串末尾的一个或多个字符


请改用正则表达式:

query = query.replace(/^[-:{}[\]*^()|"]+|[-:{}[\]*^()|"]+$/g, '');
该模式由以下部分组成:

^[CHARS]+|[CHARS]+$
其中,字符是要删除的字符

^[字符]+-匹配字符串开头的一个或多个字符

|或匹配

[CHARS]+$-字符串末尾的一个或多个字符


使用中建议的正则表达式应该是首选解决方案

但为了证明不必使用正则表达式就可以改进此解决方案,对于那些不习惯使用正则表达式的人,您可以做以下几件事:

避免重复调用query.charAt。可以将字符存储在变量中的位置。角色在条件内不会更改。 除了使用.charAt,您还可以通过括号表示法在特定位置访问字符。foo.charAt0与foo[0]相同。 您可以使用查找表或集合,而不是写出多个条件。 不要一个接一个地删掉角色,而是从角色的开头或结尾找到其所在的最后一个位置。 此外,query.charAt1似乎不正确,这将在第二个位置获取字符。如果要在第一个位置获取字符,必须使用0。与JavaScript中的其他内容一样,字符串是基于0的

应用我上面所说的,您将得到:

函数trimstr、charsStart、charsEnd{ charsStart=新集合[…charsStart]; charsEnd=新集合[…charsEnd]; //从头修剪 设trimFrom=null; 对于let i=0;charsStart.hasstr[i];i++{ trimFrom=i+1; } 如果trimFrom!=null{ str=str.from } //从头修剪 设trimTo=null; 对于let i=str.length-1;charsEnd.hasstr[i];i-{ trimTo=i; } 如果trimTo!=null{ str=str.slice0,trimTo } 返回str; }
console.logtrim'-*&sometext&:!',':{}[]*-^|/_~', '!:首选的解决方案应该是使用中建议的正则表达式

但为了证明不必使用正则表达式就可以改进此解决方案,对于那些不习惯使用正则表达式的人,您可以做以下几件事:

避免重复调用query.charAt。可以将字符存储在变量中的位置。角色在条件内不会更改。 除了使用.charAt,您还可以通过括号表示法在特定位置访问字符。foo.charAt0与foo[0]相同。 您可以使用查找表或集合,而不是写出多个条件。 不要一个接一个地删掉角色,而是从角色的开头或结尾找到其所在的最后一个位置。 此外,query.charAt1似乎不正确,这将在第二个位置获取字符。如果要在第一个位置获取字符,必须使用0。与JavaScript中的其他内容一样,字符串是基于0的

应用我上面所说的,您将得到:

函数trimstr、charsStart、charsEnd{ charsStart=新集合[…charsStart]; charsEnd=新集合[…charsEnd]; //从头修剪 设trimFrom=null; 对于let i=0;charsStart.hasstr[i];i++{ trimFrom=i+1; } 如果trimFrom!=null{ str=str.from } //向前修剪 我完了 设trimTo=null; 对于let i=str.length-1;charsEnd.hasstr[i];我-{ trimTo=i; } 如果你想空的{ str=str.slice0,trimTo } 返回str; }
console.logtrim'-*&sometext&:!',':{}[]*-^|/_~', '!:{}[]*?^ |&/\\\~'如果你不容易理解正则表达式,你可以用另一种方法,虽然仍然很难看,但可能比你的更好。未经测试:

常量过滤器=“{}[]*?!^:|&/\~”//包括逃避自己 const listChar=filter.split// forlet i=0;i如果你不能很容易地理解正则表达式,你可以用另一种方法,虽然仍然很难看,但可能比你的更好。未经测试:

常量过滤器=“{}[]*?!^:|&/\~”//包括逃避自己 const listChar=filter.split// forlet i=0;i我这样做是因为这个方法可以解决长度大于1的字符串,就像Hello Word!非常感谢。我这样做是因为这个方法可以解决长度大于1的字符串,就像Hello Word!非常感谢。