C#如何检测子串是否为双引号?CS0019报错怎么解决
问题原因
- 报错
CS0019是因为Substring()方法返回值为string类型,无法直接和char类型变量做相等判断,二者类型不匹配。 - 直接用string类型存储双引号报语法错误,是因为没有对字符串内的双引号做转义处理,编译器会将内容里的双引号识别为字符串的结束标记,导致引号首尾匹配失败。
可行解决方案
方案1(更推荐,性能更高)
直接通过字符串的索引器获取对应位置的char类型字符,不需要生成额外子串,直接和char类型的双引号做判断即可:
char quote = '"'; // 注意先判断字符串长度是否大于等于7,避免索引越界 if (yourString.Length > 6 && yourString[6] == quote) { // 你的业务逻辑 }
方案2(兼容Substring的写法)
如果需要沿用Substring的逻辑,对字符串内的双引号做转义即可,C#普通字符串字面量中使用\作为转义符:
// 注意先判断字符串长度是否大于等于7,避免截取子串时报错 if (yourString.Length > 6 && yourString.Substring(6, 1) == "\"") { // 你的业务逻辑 }
如果使用逐字字符串(@开头的字符串),则需要用两个双引号实现转义,对应写法为@""""。
内容的提问来源于stack exchange,提问作者Tobias Schober
相关产品推荐
相关产品推荐

