我在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 :(得分: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(string
和if ( (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")