Saj*_*jee 2 .net c# string indexof
字符串变量str在其中包含以下内容: se\">
我正在尝试使用以下方法找到它的开头:
str.IndexOf("se\\\">")
Run Code Online (Sandbox Code Playgroud)
返回-1
为什么不找到子串呢?
注意:由于编辑片段显示5x \一段时间,原来连续3个.
您的代码实际上正在搜索'se\\">'.在搜索包含反斜杠的字符串时,我通常会发现使用逐字字符串更容易:
str.IndexOf(@"se\"">")
Run Code Online (Sandbox Code Playgroud)
在这种情况下,你在搜索字符串中也有一个引号,所以仍然有一些转义,但我个人觉得它更容易阅读.
更新:我的回答是基于在IndexOf调用参数中引入额外斜杠的编辑.根据当前版本,我会把我的赌注放在str不包含预期的字符序列上.
更新2:根据对此答案的评论,似乎对字符串中'\'字符的作用存在一些混淆.在Visual Studio调试器中检查字符串时,将显示带有转义字符的字符串.
因此,如果您有一个文本框并在其中键入"c:\",则检查调试器中的Text属性将显示"c:\\".为了逃避目的,添加了额外的反斜杠.实际的字符串内容仍然是'c:\'(可以通过检查Length字符串的属性来验证;它将是3,而不是4).
如果我们采用以下字符串(取自下面的评论)
"'<em class = \"correct_response \">一盏夜灯</ em> <br /> <table width = \"100%\"> <tr> <td class = \"right \" >英格丽</ TD> </ TR> </ TABLE>')"
... \"序列只是转义引号; 反斜杠不是字符串内容的一部分.所以,你实际上是在寻找'se">',而不是'se\">'.这些都可以工作:
str.IndexOf(@"se"">"); // verbatim string; escape quotation mark by doubling it
str.IndexOf("se\">"); // regular string; escape quotation mark using backslash
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3089 次 |
| 最近记录: |