If you want only the numbers
0..9
to be matched by theRegex
and you don't care about for instance some Eastern Arabic numerals like ́٠١٢٣٤٥٦٧٨٩you should use an expression like ́٠١٢٣٤٥٦٧٨٩
[0-9]+`, then you should use an expression like[0-9]+
.because by using either the
d+
or[0-9]+
expression you already made sure that thevar key
is a number. Because this number has at the maximum 7 digits, you can simply callParse()
instead ofTryParse()
which eleminates the usage of theint num
.please add always braces
{}
although they might be optional. This will make your code less error prone.the return statement
return "TG" + new string('0', 7 - newNum.Length) + newNum;
can be simplified by using the PadLeft()
method like so
return "TG" + newNum.PadLeft(7,'0');
- personally I would just have a
if
clase for checking the highest number instead of theList<int>
together with the call toMax()
.
Putting this all together leads to
static string GenerateKey()
{
int max = int.MinValue;
var keys = allKeys.Where(k => k.StartsWith("TG"));
foreach (var key in keys.Select(str => Regex.Match(str, @"[0-9]+").Value))
{
int num = int.Parse(key);
if (num > max)
{
max = num;
}
}
return "TG" + (max + 1).ToString().PadLeft(7, '0');
}
If you want only the numbers
0..9
to be matched by theRegex
and you don't care about for instance some Eastern Arabic numerals like ́٠١٢٣٤٥٦٧٨٩you should use an expression like
[0-9]+`.because by using either the
d+
or[0-9]+
expression you already made sure that thevar key
is a number. Because this number has at the maximum 7 digits, you can simply callParse()
instead ofTryParse()
which eleminates the usage of theint num
.please add always braces
{}
although they might be optional. This will make your code less error prone.the return statement
return "TG" + new string('0', 7 - newNum.Length) + newNum;
can be simplified by using the PadLeft()
method like so
return "TG" + newNum.PadLeft(7,'0');
- personally I would just have a
if
clase for checking the highest number instead of theList<int>
together with the call toMax()
.
Putting this all together leads to
static string GenerateKey()
{
int max = int.MinValue;
var keys = allKeys.Where(k => k.StartsWith("TG"));
foreach (var key in keys.Select(str => Regex.Match(str, @"[0-9]+").Value))
{
int num = int.Parse(key);
if (num > max)
{
max = num;
}
}
return "TG" + (max + 1).ToString().PadLeft(7, '0');
}
If you want only the numbers
0..9
to be matched by theRegex
and you don't care about for instance some Eastern Arabic numerals liké٠١٢٣٤٥٦٧٨٩
, then you should use an expression like[0-9]+
.because by using either the
d+
or[0-9]+
expression you already made sure that thevar key
is a number. Because this number has at the maximum 7 digits, you can simply callParse()
instead ofTryParse()
which eleminates the usage of theint num
.please add always braces
{}
although they might be optional. This will make your code less error prone.the return statement
return "TG" + new string('0', 7 - newNum.Length) + newNum;
can be simplified by using the PadLeft()
method like so
return "TG" + newNum.PadLeft(7,'0');
- personally I would just have a
if
clase for checking the highest number instead of theList<int>
together with the call toMax()
.
Putting this all together leads to
static string GenerateKey()
{
int max = int.MinValue;
var keys = allKeys.Where(k => k.StartsWith("TG"));
foreach (var key in keys.Select(str => Regex.Match(str, @"[0-9]+").Value))
{
int num = int.Parse(key);
if (num > max)
{
max = num;
}
}
return "TG" + (max + 1).ToString().PadLeft(7, '0');
}
If you want only the numbers
0..9
to be matched by theRegex
and you don't care about for instance some Eastern Arabic numerals like ́٠١٢٣٤٥٦٧٨٩you should use an expression like
[0-9]+`.because by using either the
d+
or[0-9]+
expression you already made sure that thevar key
is a number. Because this number has at the maximum 7 digits, you can simply callParse()
instead ofTryParse()
which eleminates the usage of theint num
.please add always braces
{}
although they might be optional. This will make your code less error prone.the return statement
return "TG" + new string('0', 7 - newNum.Length) + newNum;
can be simplified by using the PadLeft()
method like so
return "TG" + newNum.PadLeft(7,'0');
- personally I would just have a
if
clase for checking the highest number instead of theList<int>
together with the call toMax()
.
Putting this all together leads to
static string GenerateKey()
{
int max = int.MinValue;
var keys = allKeys.Where(k => k.StartsWith("TG"));
foreach (var key in keys.Select(str => Regex.Match(str, @"[0-9]+").Value))
{
int num = int.Parse(key);
if (num > max)
{
max = num;
}
}
return "TG" + (max + 1).ToString().PadLeft(7, '0');
}