我正在使用JSONstringify来获取我的react-native应用中的用户位置,但它也带有引号,因此<Text>City: {this.state.city}</Text>
它返回City: "London"
知道如何删除引号吗?
由于
答案 0 :(得分:0)
这里有两个问题要回答:如何删除你得到的值的引号,这实际上是你的问题,以及你为什么要得到它们,因为你可能只需要修复其他东西来获得正确的值。
有很多方法可以删除字符串值周围的引号,或者实际上,删除任何第一个和最后一个字符的引号,无论它们是什么:
String.prototype.slice()
String.prototype.substring()
String.prototype.substr()
String.prototype.replace()
您可能需要查看What is the difference between String.slice and String.substring?
const city = '"London"';
const size = city.length;
// Most intuitive in my opinion:
console.log(city.slice(1, -1));
// Also ok:
console.log(city.substring(1, size - 1));
// Not so intuitive:
console.log(city.substr(1, size - 2));
// This will also match quotes that are not in the first or last position of the string:
console.log(city.replace(/"/g, ''));
&#13;
.as-console-wrapper {
max-height: 100vh !important;
}
&#13;
使用JSON.stringify
和JSON.parse
时,通常会执行以下操作:
// On the server you would send something like this:
const responseSent = JSON.stringify({ data: { location: 'London' } });
console.log('JSON SENT =', responseSent);
// Then, on the client you would parse that:
try {
const responseReceived = JSON.parse(responseSent);
console.log('PARSED JSON =', responseReceived);
console.log('PARSED VALUE =', responseReceived.data.location);
} catch (e) {
// ...
}
&#13;
.as-console-wrapper {
max-height: 100vh !important;
}
&#13;
所以你实际上并没有使用JSON.stringify
来获取价值,而是发送它。如果您正在做这样的事情,那么这就是您获得这些额外报价的原因:
// On the server you might be sending something like this:
const responseSent1 = JSON.stringify({ data: { location: 'London' } });
const responseSent2 = JSON.stringify({ data: { location: JSON.stringify('London') } });
console.log('JSON SENT 1 =', responseSent1);
console.log('JSON SENT 2 =', responseSent2);
// Then, on the client you would parse that:
try {
const responseReceived1 = JSON.parse(responseSent1);
const responseReceived2 = JSON.parse(responseSent2);
console.log('PARSED JSON 1 =', responseReceived1);
console.log('PARSED JSON 2 =', responseReceived2);
console.log('PARSED VALUE 1 =', JSON.stringify(responseReceived1.data.location));
console.log('PARSED VALUE 2 =', responseReceived2.data.location);
} catch (e) {
// ...
}
&#13;
.as-console-wrapper {
max-height: 100vh !important;
}
&#13;
另外,请注意,您要对要发送的对象进行一次描述,而不是单个值,然后再将对象作为整体进行描述。
答案 1 :(得分:-1)
在第一个和最后一个位置删除引号的最简单方法:
const input1 = '"Some text"';
const input2 = '"Some "quoted" text"';
const removeQuotes = string => string.replace(/"(.+)"/g, "$1")
console.log(removeQuotes(input1)); // Some text
console.log(removeQuotes(input2)); // Some "quoted" text
在您的情况下,您可以像这样调用removeQuotes
函数
<Text>City: {removeQuotes(this.state.city)}</Text>
答案 2 :(得分:-1)
如果您使用JSON.stringify()
创建this.state.city
,那么您应该使用JSON.parse()
撤消它。
<Text>City: {JSON.parse(this.state.city)}</Text>
但你可能不应该首先使用JSON.stringify()
。这应仅用于序列化整个对象,而不是用于单个属性。解析对象时,属性将包含有效数据。