2013-09-29 120 views
-1

我在C#编写这个程序:如何从长字符串中查找子字符串(0,91)?

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)

回答

2

首先,你不必强制转换为charss[i]或他人。 ss[i]等已经是char

另一方面,您尝试在if循环中连接两个字符(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。如果你想知道“091”开头的字符串,然后你可以使用

+1

非常感谢 – zozo

+0

使用含有只返回true或fulse – zozo

+0

@ZainabJawad所以..?不是你想要的吗? –

2

使用String.Contains()为此目的

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

非常感谢 – zozo

1

var pos = ss.IndexOf("091") 
+0

非常感谢 – zozo

相关问题