Javascript 删除逗号,除非在引号内,不使用regexp
我试图删除字符串中的逗号,除非它们出现在引号中Javascript 删除逗号,除非在引号内,不使用regexp,javascript,Javascript,我试图删除字符串中的逗号,除非它们出现在引号中 var mystring = "this, is, a, test, example, \"i, dont know\", jumps" ; var newchar = ''; mystring = mystring.split(',').join(newchar);// working correctly document.write(mystring); 我的输出是 这是一个“我不知道”跳跃的测试示例 预期产量 这是一个“我不知道”跳跃
var mystring = "this, is, a, test, example, \"i, dont know\", jumps" ;
var newchar = '';
mystring = mystring.split(',').join(newchar);// working correctly
document.write(mystring);
我的输出是
这是一个“我不知道”跳跃的测试示例
预期产量
这是一个“我不知道”跳跃的测试示例
有几个问题。我如何找到字符串的索引,以便在引号内包含逗号,但在引号外
“
它不包含逗号,
。我知道我必须使用indexOf和substring,但我不知道如何格式化它(请不要使用正则表达式,因为我对JavaScript不熟悉,我只关注基本内容。)有一天你需要开始使用regexp
,而不是你的朋友。解决方案很简单:
var mystring=“这是一个测试,例如,“我不知道”,跳跃;
var newchar='389;';
mystring=mystring.match(/(“*?”|[^“,\s]+)(?=\s*,|\s*$)/g)。join(newchar);//工作正常
document.write(mystring);
总有一天你需要开始使用regexp
,而不是你的朋友。regexp
解决方案很简单:
var mystring=“这是一个测试,例如,“我不知道”,跳跃;
var newchar='389;';
mystring=mystring.match(/(“*?”|[^“,\s]+)(?=\s*,|\s*$)/g)。join(newchar);//工作正常
document.write(mystring);
这将起作用,但并非适用于所有情况。例如:它不适用于带两个以上引号的字符串
var mystring=“这是一个测试,例如,“我不知道”,跳跃;
var newchar='';
var firstIndex=mystring.indexOf(“\”);
var lastIndex=mystring.lastIndexOf(“\”);
var substring1=mystring.substring(0,firstIndex).split(',).join(newchar);
var substring2=mystring.substring(lastIndex).split(',').join(newchar);
mystring=substring1+mystring.substring(firstIndex,lastIndex)+substring2;
document.write(mystring);
这将起作用,但并不适用于所有情况。例如:它不适用于带有两个以上引号的字符串
var mystring=“这是一个测试,例如,“我不知道”,跳跃;
var newchar='';
var firstIndex=mystring.indexOf(“\”);
var lastIndex=mystring.lastIndexOf(“\”);
var substring1=mystring.substring(0,firstIndex).split(',).join(newchar);
var substring2=mystring.substring(lastIndex).split(',').join(newchar);
mystring=substring1+mystring.substring(firstIndex,lastIndex)+substring2;
document.write(mystring);
在字符串中循环,记住您是否在一组引号内,并构建一个新字符串,其中引号内的逗号不会添加到该字符串中:
var inQuotes = false; // Are we inside quotes?
var result = ''; // New string we will build.
for (var i = 0; i < str.length; i++) { // Loop through string.
var chr = str[i]; // Extract character.
var isComma = chr === ','; // Is this a comma?
var isQuote = chr === '"'; // Is this a quote?
if (inQuotes || !isComma) { // Include this character?
if (isQuote) inQuotes = !inQuotes; // If quote, reverse quote status.
result += chr; // Add character to result.
}
}
var-inQuotes=false;//我们在引号内吗?
var result='';//我们将构建的新字符串。
对于(var i=0;i
与公认的解决方案相比,此解决方案的优点是,即使输入中有多个引号字符串,它也能正常工作。循环字符串,记住您是否在一组引号内,并构建一个不添加引号内逗号的新字符串:
var inQuotes = false; // Are we inside quotes?
var result = ''; // New string we will build.
for (var i = 0; i < str.length; i++) { // Loop through string.
var chr = str[i]; // Extract character.
var isComma = chr === ','; // Is this a comma?
var isQuote = chr === '"'; // Is this a quote?
if (inQuotes || !isComma) { // Include this character?
if (isQuote) inQuotes = !inQuotes; // If quote, reverse quote status.
result += chr; // Add character to result.
}
}
var-inQuotes=false;//我们是内部报价吗?
变量结果=“”;//我们将建立新的字符串。
对于(var i=0;i
与公认的解决方案相比,此解决方案的优点是,即使输入中有多个引号字符串,它也能正常工作。um,您需要一个reg exp…或者您必须编写一些不使用拆分的代码。正则表达式您的选项是:1)使用regex;2)编写一个小的解析器是否可以找到位置““是查找然后再对子字符串吗?输入中是否有多个带引号的字符串?”?顺便说一下,将来请使用更具描述性的问题标题。嗯,你需要一个reg exp。。。。或者您必须编写一些不使用拆分的代码。是正则表达式您的选项:1)使用正则表达式;2) 编写一个小的解析器是否可以找到“”的位置,然后将其子字符串化?输入中是否可以有多个带引号的字符串?顺便说一句,将来请使用更具描述性的问题标题。我们能找到“使用if”的索引吗?我感谢你对我的帮助。你能详细说明你的意思吗?现在代码找到了“使用if”的索引吗?我们能找到“使用if”的索引吗?只是想知道。我给了你最好的答案。谢谢,谢谢!若您想使用IF语句,那个么应该有一些您想要比较的值。我不知道你们会如何简单地使用if语句来查找任何你们还不知道的索引值。您可能需要将字符串转换为数组,然后查找indexOf数组是否有引号。我们是否可以使用if找到indexOf\?我感谢您对我的帮助。请详细说明您的意思?现在代码找到的索引是“”。我们是否可以使用if语句查找indexOf\?只是想知道。我给了你最好的答案。谢谢,谢谢!如果你想使用IF语句,应该有