我正在尝试创建一个程序,它将循环遍历字符串中的每个字符,并声明字符特定的索引
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("enter");
string expression = Console.ReadLine();
foreach(char c in expression)
{
if (c == '+')
{
Console.WriteLine("plus detected! :{0}",expression.IndexOf(c));
}
}
Console.ReadLine();
}
}
}
我的代码的问题在于它没有说明循环中特定“+”的索引,而是说明了'+'的第一个实例
如何解决这个问题而不是说具体的指数
(例如1 + 2 + 3 + 4 + 5应该产生“1,3,5,7”,每个'+'的指数(?)
答案 0 :(得分:4)
我建议使用for循环:
for(int i = 0; i < expression.Length; i++){
if(expression[i]== '+'){
Console.WriteLine("plus detected! :{0}",i);
}
}
答案 1 :(得分:4)
最简单的解决方案是使用@Ali Ezzat Odeh建议的for循环。另一种解决方案是使用Enumerable.Range
:
var indices = Enumerable.Range(0, expression.Length)
.Where(index => expression[index] == '+');
foreach(var index in indices)
Console.WriteLine(index);
答案 2 :(得分:0)
您可以使用for循环来迭代表达式:
for(int i = 0; i < expression.length; i++)
{
if (expression[i] == '+')
{
Console.WriteLine("plus detected! :{0}", i);
}
}
或者您介绍一个自定义计数器
int i = 0;
foreach(char c in expression)
{
if (c == '+')
{
Console.WriteLine("plus detected! :{0}", i);
}
i++;
}
答案 3 :(得分:0)
这种轻微的修改将解决您的问题,保留原始代码:
//you could even use byte for this to save memory :)
int index = -1;
Console.WriteLine("enter");
string expression = Console.ReadLine();
foreach (char c in expression)
if (c == '+')
Console.WriteLine("plus detected! :{0}", (index = expression.IndexOf(c,index + 1)));
Console.ReadLine();