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

本文关键字:字符串 | 更新日期: 2023-09-27 18:33:08

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

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

首先,您不必投射即可char您的ss[i]或其他人。 ss[i]和其他人已经在char.

作为第二个,你尝试在你的if循环中连接两个char(ss[i+1]ss[i+2](,然后你用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.

为此使用 String.Contains()

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

如果你想知道"091"在字符串中的开始,那么你可以使用:

var pos = ss.IndexOf("091")