好的,我尝试过你们所有的东西,但是它仍然不适合我。我不确定为什么,但它有时不会产生输出,有时它会放出一个不正确的输出。我做错了什么。
InPutBox = Input.Text;
int x = 1;
var lines = Input.Text.Split(new string[] { Environment.NewLine },StringSplitOptions.None);
for (var index = 0; index < lines.Length; index++)
{
var line = lines[index];
do
{
x++;
System.Console.WriteLine("'{0}'", InPutBox);
bool test1 = InPutBox.StartsWith("11600");
bool test2 = InPutBox.EndsWith("(");
if (test1 && test2)
{
int first = InPutBox.IndexOf("11600");
int last = InPutBox.LastIndexOf("(");
InPutBox = InPutBox.Substring(first, last - first);
}
}
while (x < 50);
System.Console.WriteLine("'{0}'", line);
if ((line.StartsWith("11600") && line.EndsWith("(")))
{
MessageBox.Show("These are errors in line" + index + ": " + line);
break;
}
}
答案 0 :(得分:4)
此:
InPutBox = InPutBox.Substring(last, first - last);
可能需要这样:
InPutBox = InPutBox.Substring(first, last - first);
可能需要添加或减少1,具体取决于您是否要包含W
或0
。在调试器中运行它以查看实际数字,您应该能够更快地进行诊断。
答案 1 :(得分:1)
检查您的条件。使用当前代码,如果找不到last,则.Substring将抛出错误(因为startIndex不能小于零)。
你可能想要这个:
bool test1 = InPutBox.StartsWith("W");
bool test2 = InPutBox.EndsWith("0");
if (test1 && test2) {
int first = InPutBox.IndexOf("W");
int last = InPutBox.LastIndexOf("0");
InPutBox = InPutBox.Substring(last, first - last);
}
@D Stanley可能是正确的,因为最后一行也要反转
InPutBox = InPutBox.Substring(first, last - first);
答案 2 :(得分:0)
private void InPutBoxMethod()
{
// split text into lines
var lines = textBox1.Text.Split(new string[] {Environment.NewLine}, StringSplitOptions.None);
// loop through all lines and check for errors
for (var index = 0; index < lines.Length; index++)
{
var line = lines[index];
System.Console.WriteLine("'{0}'", line);
if ((line.StartsWith("W") && line.EndsWith("0")))
{
MessageBox.Show("These are errors in line " + index + ": " + line);
break;
}
}
}