如何从长字符串中找到子字符串(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)
?
首先,您不必投射即可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")