javascript中的单引号到双引号,以及双引号到单引号
我想换衣服 从单引号到双引号 和 从双引号到单引号 在jquery或js中javascript中的单引号到双引号,以及双引号到单引号,javascript,jquery,Javascript,Jquery,我想换衣服 从单引号到双引号 和 从双引号到单引号 在jquery或js中 var myString = " tes't tes\"t tes\"t te'st "; console.log(myString); for (i = 0; i < myString.length; i++) { console.log(myString[i]); if (myString[i] == "'") { myString[i] == "\"";
var myString = " tes't tes\"t tes\"t te'st ";
console.log(myString);
for (i = 0; i < myString.length; i++) {
console.log(myString[i]);
if (myString[i] == "'") {
myString[i] == "\"";
continue;
}
if (myString[i] == "\"") {
myString[i] == "'";
continue;
}
}
console.log(myString);
var myString=“tes't tes\'t tes\'t te'st”;
log(myString);
对于(i=0;i
但是我的功能不太好。
请纠正我。你在做比较,而不是评估。此外,您不能以这种方式更改字符串,您需要创建一个新字符串:
var myString = " tes't tes\"t tes\"t te'st ";
console.log(myString);
var str = [];
for (i = 0; i < myString.length; i++) {
console.log(myString[i]);
if (myString[i] == "'") {
str.push("\"");
}
else if (myString[i] == "\"") {
str.push("'");
continue;
}
else
{
str.push(myString[i]);
}
}
str.join("");
console.log(str);
var myString=“tes't tes\'t tes\'t te'st”;
log(myString);
var-str=[];
对于(i=0;i
如果你不是在做赋值(
myString[i]=“\”;
),而是在的内部检查它。这可能是一个比较。唯一的问题是,字符串是不可变的,因此不会按预期工作。解决方案,构建一个新字符串:
function flipQuotes(str) {
var result = [], i = 0, lim = str.length, c;
for (; i < lim; i += 1) {
c = str.charAt(i);
switch(c) {
case '"':
result.push("'");
break;
case "'":
result.push('"');
break;
default:
result.push(c);
}
}
return result.join('');
}
var myString = " tes't tes\"t tes\"t te'st ";
console.log(
flipQuotes(myString) // => ' tes"t tes't tes't te"st '
);
函数flipQuotes(str){
变量结果=[],i=0,lim=str.length,c;
对于(;i“tes”t tes“ts”t te“st”
);
除了不正确使用=
运算符外,您的代码中还有另一个问题:
myString[i]
可用于获取字符串的第i个字符(在大多数浏览器中);但不能用于“更改”该字符。这将起作用:
var a = myString[i];
这不会:
myString[i] = a;
这是您的代码,重新编写时做了一些小改动,并使用和来读取和更改字符串中的字符:
var myString = " tes't tes\"t tes\"t te'st ";
console.log(myString);
for (i = 0; i < myString.length; i++) {
if (myString.charAt(i) == "'") {
myString = myString.substring(0, i) + '"' + myString.substring(i + 1);
} else if (myString.charAt(i) == '"') {
myString = myString.substring(0, i) + "'" + myString.substring(i + 1);
}
}
console.log(myString);
var myString=“tes't tes\'t tes\'t te'st”;
log(myString);
对于(i=0;i
这里还有一个使用不同方法的解决方案:
var myString = " tes't t%es\"t tes\"t te'st ",
result = myString.replace(/%/g, '\\%')
.replace(/'/g, '%')
.replace(/"/g, "'")
.replace(/[^\\]%/g, function (m) {
return m[0] + '"';
})
.replace('\\%', '%');
首先,字符串是不可变的,对字符串执行的任何操作,如.replace()
,实际上都会返回一个新字符串。您不能执行以下操作:
myString[ i ] = "x";
您的另一个错误是使用比较运算符作为赋值运算符
myString[ i ] == "x";
知道了这一点,您需要构造一个新字符串,并用新值替换myString
的值。构造字符串的一种方法是使用.split(“”)
方法创建字符串的数组表示形式,对数组执行突变,然后使用.join(“”)返回字符串
数组的方法
var myString = " tes't tes\"t tes\"t te'st ";
var tokens = myString.split('');
for (i = 0; i < tokens.length; i++) {
if (tokens[i] == "'") {
tokens[i] = "\"";
continue;
}
if (tokens[i] == "\"") {
tokens[i] = "'";
continue;
}
}
myString = tokens.join('');
console.log(myString);
var myString=“tes't tes\'t tes\'t te'st”;
var tokens=myString.split(“”);
对于(i=0;i
什么地方出了问题?你得到了什么结果?顺便说一句,不要同时使用这两个continue
语句,你可以使用else,如果语句,现在你有两个问题;)