Добро пожаловать в SO!
Проблема, с которой вы столкнулись, заключается в следующей строке:
super(size);
, потому что в классе нет конструктора с одним аргументом Clothing
. Так как вы знаете, что Jeans
синего цвета, вам нужно использовать конструктор с двумя аргументами, например:
public Jeans(String size)
{
super(size,"blue");
}
Или, может быть, лучше:
private final String COLOR = "blue";
public Jeans(String size)
{
super(size,COLOR);
}
Что относительно регулярного выражения:
bool val = System.Text.RegularExpressions.Regex.IsMatch(str, @"\d");
При поиске целочисленного значения, Вы могли бы использовать интервал. TryParse:
int result;
if (int.TryParse("123", out result))
{
Debug.WriteLine("Valid integer: " + result);
}
else
{
Debug.WriteLine("Not a valid integer");
}
Для проверки десятичного числа замените интервал. TryParse с Десятичным числом. TryParse. Проверьте это сообщение в блоге и комментарии, "Почему необходимо использовать TryParse () в C#" для деталей.
При необходимости в десятичных числах Вы могли бы альтернативно использовать это регулярное выражение:
return System.Text.RegularExpressions.Regex.IsMatch(
TextValue, @"^-?\d+([\.]{1}\d*)?$");
И наконец другая альтернатива (если Вы не неукоснительно против VB.NET), Вы могли бы использовать метод в Microsoft. Пространство имен VisualBasic:
Microsoft.VisualBasic.Information.IsNumeric("abc");
Если Вы собираетесь циклично выполниться через строку, не используйте интервал. TryParse... это слишком тяжело. Вместо этого используйте символ. IsNumber ();
пример:
foreach (char c in myString)
if (char.IsNumber(c))
return true;
Если бы Вы - linq наркоман как я, Вы сделали бы это этот путь
string s = "abc1def2ghi";
bool HasNumber = (from a in s.ToCharArray() where a >= '0' && a <= '9' select a).Count() > 0;
в C# 2.0 попробуйте это:
string str = "dfdsfdsf8fdfdfd9dfdfd4";
for (int i = 0; i < str.Length; i++)
{
int result;
if (int.TryParse(str[i].ToString(), out result))
{
//element is a number
}
else
{
// not a number
}
}