在字符串中搜索子字符串

本文关键字:字符串 搜索 | 更新日期: 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 linetab字符,而不是空格?

有时区分大小写很重要。您可以通过名为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
        }

这将给你"月球正在撞击地球!">