-1

我用 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)

4

3 回答 3

2

用于String.Contains()此目的

if(ss.Contains("091"))
{
    Console.WriteLine(" found");
}
于 2013-09-29T09:58:11.177 回答
2

首先,您不必向charss[i]或其他人投射。ss[i]和其他人已经char

其次,您尝试在 if 循环中连接两个 char ( ss[i+1]and ss[i+2]),并在使用 a 检查相等性之后string。这是错误的。将其更改为;

if ( (ss[i] == '0') && (ss[i + 1] == '9') && (ss[i + 2]) == '1') 
   Console.WriteLine("found");

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

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

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

这里一个DEMO.

使用“包含”仅返回真或假,“索引”返回字符串的位置,但我想在 ss 中找到“091”的位置,如果“091”重复如:ss =“763091d44a0914”我怎样才能找到第二个“091 “??

在这里,您如何找到字符串中的所有索引;

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]);
}

输出将是;

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

这里一个DEMO.

于 2013-09-29T10:01:20.317 回答
1

如果您想知道字符串中“091”的开始位置,则可以使用:

var pos = ss.IndexOf("091")
于 2013-09-29T10:01:59.463 回答