我有一个字符串,其中包含一些带有一些特殊字符的数据,需要在JavaScript中删除所需特殊字符之间的数据。
特殊字符将在变量中获得。
var desiredChar = "~0~";
想象一下这是输入字符串:
〜0〜1 | 0 | 20170807 | 45 | 111.00 |〜0〜〜1〜1 | 0 | 20170807 | 50 | 666.00 |〜1 ~~ 2〜1 | 0 | 20170807 | 55 | 111.00 |〜2〜
所以我应该以粗体删除文本。
期望的输出应该是 -
〜1〜1 | 0 | 20170807 | 50 | 666.00 |〜1 ~~ 2〜1 | 0 | 20170807 | 55 | 111.00 |〜2〜
我尝试过使用“替换”和“正则表达式”,但由于所需的字符在变量中传递并且不断变化,我面临着困难。
答案 0 :(得分:1)
您可以根据包含要删除的文本的任何边界字符创建自己的正则表达式,然后将任何与该正则表达式匹配的文本替换为空白字符串""
。
下面的JS应该适用于您的用例(并且它也适用于多次出现):
var originalText = "~0~1|0|20170807|45|111.00|~0~~1~1|0|20170807|50|666.00|~1~~2~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);
答案 1 :(得分:0)
根据输入字符串,您可以使用.indexOf()
,.lastIndexOf()
和.slice()
。
注意,传递给|
构造函数的OR字符RegExp
应该进行转义,以避免通过将RegExp
字符串解释为|
{{1}来创建OR
结果|
中传递给RegExp
。
.replace()

答案 2 :(得分:0)
您可以使用字符串输入从构造函数构建正则表达式。
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, "");
答案 3 :(得分:-1)
您可以使用RegExp对象:
var regexstring = "whatever";
var regexp = new RegExp(regexstring, "gi");
var str = "whateverTest";
var str2 = str.replace(regexp, "other");
document.write(str2);
然后你可以用任何你想要的方式构造regexstring。
了解更多相关信息