在字符串中搜索子字符串
本文关键字:字符串 搜索 | 更新日期: 2023-09-27 17:54:27
我真的是个初学者,我已经知道了
string.indexOf("");
可以搜索整个单词,但当我尝试搜索e.g: ig out of pig, it doesn't work
时。
我在这里有一个类似的字符串(的一部分(:
<Special!>The moon is crashing to the Earth!</Special!>
因为我的文件中有很多这样的内容,我无法编辑所有这些内容并添加如下空格:
< Special! > The moon is crashing to the Earth! </ Special! >
我需要获得Special的sub-string
!月亮正在撞击地球!在不添加像HTMLAgilityPack
这样的插件的情况下,搜索单词一部分的简单方法是什么?
IndexOf会起作用,您可能只是使用不当。
如果你的字符串在一个名为mystring的变量中,你会说mystring。IndexOf,然后传入您要查找的字符串。
string mystring = "somestring";
int position = mystring.IndexOf("st");
您是如何使用它的?你应该这样使用:
string test = "pig";
int result = test.IndexOf("ig");
// result = 1
如果你想让它不区分大小写,请使用
string test = "PIG";
int result = test.IndexOf("ig", StringComparison.InvariantCultureIgnoreCase);
// result = 1
- String.IndexOf方法-MSDN
请尝试以下操作:
string s = "<Special!>The moon is crashing to the Earth!</Special!>";
int whereMyStringStarts = s.IndexOf("moon is crashing");
IndexOf
也应该使用空格,但可能您有new line
或tab
字符,而不是空格?
有时区分大小写很重要。您可以通过名为comparisonType
的附加参数来控制它。示例:
int whereMyStringStarts = s.IndexOf("Special", StringComparison.OrdinalIgnoreCase);
MSDN 上有关IndexOf
:String.IndexOf方法的更多信息
无论如何,我认为您可能需要正则表达式来创建更好的解析器。IndexOf是一个非常原始的方法,您可能会陷入混乱的代码中。
string page = "<Special!>The moon is crashing to the Earth!</Special!>";
if (page.Contains("</Special!>"))
{
pos = page.IndexOf("<Special!>");
propertyAddress = page.Substring(10, page.IndexOf("</Special!>")-11);
//i used 10 because <special!> is 10 chars, i used 11 because </special!> is 11
}
这将给你"月球正在撞击地球!">