如何从长字符串中查找子字符串(0,91)?

时间:2013-09-29 09:56:44

标签: c#

我在c#编写这个程序:

static void Main(string[] args)
{
    int i;
    string ss = "fc7600109177";           

    // I want to found (0,91) in ss string 


    for (i=0; i<= ss.Length; i++)
        if (((char)ss[i] == '0') && (((char)ss[i+1] + (char)ss[i+2]) == "91" ))
            Console.WriteLine(" found");
    }

此计划有什么问题?如何找到(0,91)

3 个答案:

答案 0 :(得分:2)

为此目的使用String.Contains()

if(ss.Contains("091"))
{
    Console.WriteLine(" found");
}

答案 1 :(得分:2)

首先,您不必向char ss[i]或其他人投降ss[i]char和其他人已经ss[i+1]

作为第二步,您尝试在if循环中并且在检查与ss[i+2]的相等性之后,将两个char(stringif ( (ss[i] == '0') && (ss[i + 1] == '9') && (ss[i + 2]) == '1') Console.WriteLine("found"); )连接起来。这是错的。将其更改为;

string ss = "fc7600109177"; 
bool found = ss.Contains("091");

作为第三个,我认为最重要的是,不要写那样的代码。您可以轻松使用String.Contains方法,它完全符合您的要求。

  

返回一个值,指示是否出现指定的String对象   在这个字符串中。

string chars = "091";
string ss = "763091d44a0914";
List<int> indexes = new List<int>();
foreach ( Match match in Regex.Matches(ss, chars) )
{
     indexes.Add(match.Index);
}

for (int i = 0; i < indexes.Count; i++)
{
     Console.WriteLine("{0}. match in index {1}", i+1, indexes[i]);
}

这里有 DEMO

  

使用“contains”仅返回true或false以及“index of”返回位置   字符串,但我想在ss中找到“091”的位置,如果“091”   重复如:ss =“763091d44a0914”我怎么能找到第二个“091”??

在这里您可以找到字符串中的所有索引;

1. match in index: 3
2. match in index: 10

输出将是;

{{1}}

这里有 DEMO

答案 2 :(得分:1)

如果你想知道字符串中“091”的起始位置,那么你可以使用:

var pos = ss.IndexOf("091")