移除JSON响应字符串的\与\n后,字符串比较不相等问题求助
问题分析与解决
你遇到的核心问题是没有处理字符串首尾的双引号,而且你的Replace(@"\","")操作完全是无效的——因为实际从响应读取的字符串里根本没有反斜杠字符!
先理清字符串的真实内容
当你通过ReadAsStringAsync()拿到mycontent时,它的真实值是:
"The time is Valid"
(注意:这里的首尾双引号是字符串的实际内容,不是C#代码里的转义符;而\n是换行符,会被Trim()去掉)
而你的tocompare是:
The time is Valid
(没有首尾双引号)
你当前处理的问题
Trim()确实会去掉末尾的换行符\n,但处理后mycontent变成了"The time is Valid"(还是带双引号)Replace(@"\","")完全没用:C#代码里的\"是用来表示字符串里的双引号的转义语法,实际字符串内容里并没有反斜杠,所以这个替换操作找不到任何要替换的字符。
正确的处理方式
只需要在Trim()之后,再去掉首尾的双引号即可,有两种常用方法:
方法1:精准去掉首尾双引号(推荐)
用Trim('"')专门移除首尾的双引号,不会影响字符串中间可能存在的引号(如果有的话):
var processedContent = mycontent.Trim().Trim('"'); if (string.Compare(tocompare, processedContent) == 0) { // TODO: 你的业务逻辑 }
方法2:移除所有双引号(如果确定内容中间没有引号的话)
如果能保证字符串里只有首尾有双引号,也可以直接替换所有双引号:
var processedContent = mycontent.Trim().Replace("\"", ""); if (string.Compare(tocompare, processedContent) == 0) { // TODO: 你的业务逻辑 }
这样处理后,processedContent就会和tocompare完全一致,string.Compare就会返回0了。
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

