您好我想在字符串数组中搜索字符,但我需要搜索2个索引。例如,在索引2和10之间。我该怎么做?
foreach (var item in currentline[2 to 10])
{
if (item == ',' || item == ';')
{
c++;
break;
}
else
{
data += item;
c++;
}
}
答案 0 :(得分:1)
如您所见,foreach
枚举了一个集合或任何IEnumerable
。
正如评论所说,您可以改为使用for
循环,并挑选出您想要的元素。
或者,由于您要搜索字符串中的字符,可以使用IndexOf
,使用起始索引并计算overload来查找字符的位置。
答案 1 :(得分:0)
由于您的代码中没有使用c++
,我会认为它是代码的遗迹。
您可以像这样简单地解决您的问题:
结果代码:
var data = "##";//01234567891 -- index for the string below.
var currentline= "kj[abcabc;z]Selected data will be between: '[]';";
var exceptChar = ",;";
data += new string(
input.Skip(3)
.Take(8)
.TakeWhile(x=> !exceptChar.Contains(x))
.ToArray()
);
答案 2 :(得分:0)
您可以使用此LINQ解决方案搜索字符串中的字符并获取其索引:
string str = "How; are, you; Good ,bye";
char[] charArr = { ',', ';' };
int startIndex = 2;
int endIndex = 10;
var indexes = Enumerable.Range(startIndex, endIndex - startIndex + 1)
.Where(i=>charArr.Contains(str[i]))
.ToArray();
在这种情况下,我们得到Enumerable.Range(2, 9)
,它生成一个介于2和10之间的序列,Where
子句过滤str
中与charArr
中的一个字符匹配的字符的索引{1}}。
答案 3 :(得分:0)
有一个名为string.IndexOfAny()
的字符串方法,它允许您传递要搜索的字符数组,起始索引和计数。对于您的示例,您可以这样使用它:
string currentLine = ",;abcde;,abc";
int index = currentLine.IndexOfAny(new[] {',', ';'}, 2, 10-2);
Console.WriteLine(index);
请注意,最后一个参数是从指定索引开始搜索的字符数,因此如果要从索引2开始并在索引10处完成,则计数将为finish-start
,即{{1 }}
答案 4 :(得分:0)
感谢everey一个最终我用你的guid修复它所有
myarr = new mytable[50];
number_of_records = 0;
number_of_records = fulllines.Length;
for (int line = 1; line < fulllines.Length; line++)
{
int c = 0;
for (int i = 0; i < record_lenth; i++)
{
string data = "";
string currentline = fulllines[line];
string value = "";
for (int x = c; x < fulllines[line].Length; x++)
{
value += currentline[x];
}
foreach (var item in value)
{
if (item == ',' || item == ';')
{
c++;
break;
}
else
{
data += item;
c++;
}
}
}
}