C#如何清除字符串

时间:2014-05-20 20:10:32

标签: c# string

我尝试使用while创建简单的错误处理,但我无法清除字符串。

string RelDstring;
int RelD;
bool ifintreld = int.TryParse(RelDstring, out RelD);
while (ifintreld != true)
{
    RelDstring = null;
    Console.WriteLine("Podano bledny rok wydania, uzyj liczb calkowitych.");
    RelDstring = Console.ReadLine();
}
RelD = Convert.ToInt32(RelDstring);

它只是无限循环,好像我的string一直不正确。我怎样才能清除我的字符串?

5 个答案:

答案 0 :(得分:4)

您需要将TryParse置于循环中,以便在重试后查看输入是否有效:

string RelDstring;
int RelD;

Console.WriteLine("Podaj rok wydania");
RelDstring = Console.ReadLine();        // copied from previous question

bool ifintreld = int.TryParse(RelDstring, out RelD);
while (ifintreld != true)
{
    Console.WriteLine("Podano bledny rok wydania, uzyj liczb calkowitych.");
    RelDstring = Console.ReadLine();
    ifintreld = int.TryParse(RelDstring, out RelD);
}

另外:

  • 您无需将字符串设置为null
  • 在 while循环
  • 之后,您无需再次解析

答案 1 :(得分:3)

您应该更改bool变量ifintreld。字符串未在循环中检查。

答案 2 :(得分:1)

请改为尝试:

string RelDstring;
int RelD;
bool ifintreld;

RelDstring = Console.ReadLine();
ifintreld = int.TryParse(RelDstring, out RelD);

while(!ifintreld)
{
    Console.WriteLine("Podano bledny rok wydania, uzyj liczb calkowitych.");
    RelDstring = Console.ReadLine();
    ifintreld = int.TryParse(RelDstring, out RelD);
}

答案 3 :(得分:0)

好了,不得不谷歌翻译这个,你可以这样做。我假设您只是验证用户输入的有效年份。没有理由循环这个。

string year = Console.ReadLine();
DateTime validYear;
if (!DateTime.TryParseExact(year, "yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out validYear))
{
    Console.WriteLine("Invalid Year");
}

答案 4 :(得分:-1)

string relDstring;
int relD;

do
{
    Console.WriteLine("Podano bledny rok wydania, uzyj liczb calkowitych.");
    relDstring = Console.ReadLine();
} while(!int.TryParse(relDstring, out relD);