Javascript 删除两个变量之间的字符串
我有一个字符串,其中包含一些带有几个特殊字符的数据,需要删除JavaScript中所需特殊字符之间的数据 特殊字符将在变量中获得Javascript 删除两个变量之间的字符串,javascript,jquery,regex,replace,Javascript,Jquery,Regex,Replace,我有一个字符串,其中包含一些带有几个特殊字符的数据,需要删除JavaScript中所需特殊字符之间的数据 特殊字符将在变量中获得 var desiredChar = "~0~"; 将其想象为输入字符串: ~0~1 | 0 | 20170807 | 45 | 111.00 | ~0~1~1 | 0 | 20170807 | 50 | 666.00 | ~1 ~~2~1 | 0 124807 | 55 124807.00 | ~2~ 所以我应该删除粗体的文本 期望的输出应该是- ~1~1 | 0
var desiredChar = "~0~";
将其想象为输入字符串:
~0~1 | 0 | 20170807 | 45 | 111.00 | ~0~1~1 | 0 | 20170807 | 50 | 666.00 | ~1 ~~2~1 | 0 124807 | 55 124807.00 | ~2~
所以我应该删除粗体的文本
期望的输出应该是-
~1~1 | 0 | 20170807 | 50 | 666.00 | ~1~~2~1 | 0 | 20170807 | 55 | 111.00 | ~2~
我尝试过使用“Replace”和“Regex”,但由于所需的字符在变量中传递并不断更改,我遇到了一些困难。给定输入字符串,您可以使用
.indexOf()
,.lastIndexOf()
和.slice()
注意,传递给RegExp
构造函数的字符
应该被转义,以避免通过传递字符串将
字符解释为或
而创建的RegExp
,从而将RegExp
传递给.replace()
var desiredChar=“~0~”;
var str=“~0~1 | 0 | 20170807 | 45 | 111.00 | ~0~~1~1 | 0 | 20170807 | 50 | 666.00 | ~1 | 0 | 20170807 | 55 | 111.00 | ~2~”;
var not=str.slice(str.indexOf(desiredChar),str.lastIndexOf(desiredChar)+desiredChar.length);
//逃脱或`|`
var res=str.replace(新的RegExp(不是.replace(/[|]/g,“\\\\\\”)),“”);
console.log(res)
您可以使用RegExp对象:
var regexstring = "whatever";
var regexp = new RegExp(regexstring, "gi");
var str = "whateverTest";
var str2 = str.replace(regexp, "other");
document.write(str2);
然后,您可以用任何方式构造regexstring
您可以在上阅读有关它的更多信息。您可以根据包含要删除的文本的任何边界字符创建自己的正则表达式,然后将与该正则表达式匹配的任何文本替换为空白字符串“
”
下面的JS应该适用于您的用例(也应该适用于多次出现):
var originalText=“~0~1 | 0 | 20170807 | 45 | 111.00 | ~0~~1~1 | 0 | 20170807 | 50 | 666.00 | ~1 | 0 | 20170807 | 55 | 111.00 | ~2~”;
var desiredChar=“~0~”;
var customRegex=new RegExp(desiredChar+“*?”+desiredChar,“gi”);
var processedText=originalText.replace(customRegex,“”);
console.log(processedText)代码>您可以使用字符串输入从构造函数构建正则表达式
var desiredChar = "~0~";
// use the g flag in your regex if you want to remove all substrings between desiredChar
var myRegex = new Regex(desiredChar + ".*" + desiredChar, 'ig');
var testString = "~0~1|0|20170807|45|111.00|~0~~1~1|0|20170807|50|666.00|~1~~2~1|0|20170807|55|111.00|~2~";
testString = testString.replace(myRegex, "");
在这个例子中,我考虑了它的~0~。但它可以是~1~或~2~之类的任何东西。因此,需要考虑变量作为一个整体,它总是在字符串的开始?不,不一定是开始,它可以在任何地方…我已经尝试使用“替换”和“正则表达式”-这是很好的显示你在这里尝试了什么,这样读者就可以将你的帖子与之前从未尝试过的问题区分开来。感谢@halfer.的投入,即使在将来也会尝试同样的方式:)…干杯,谢谢你的一顿@abagshaw..这非常有效..救了meGlad我可以帮忙:)