对于一个小问题我有一个简单的解决方案,但作为一个新手开发者,我总是想学习更正确/更好的方法来做某事。目前,我得到一个看起来或多或少像这样的字符串...
一些随机文本,参考编号:Supp-1234以及一些更随机的文本......
现在,如果我们假设这种情况并且我们只想获得参考编号的数字部分,我们可以这样做......
int firstCharacter = mystring.IndexOf("Supp-", StringComparison.InvariantCultureIgnoreCase);
myIssueId = firstCharacter != -1 ? mailItem.Subject.Substring(firstCharacter + 5, 4) : "";
但是现在,假设我们得到一个参考号Supp-12345,现在这不会起作用。你可以试试这样的......
int firstCharacter = mystring.IndexOf("Supp-", StringComparison.InvariantCultureIgnoreCase);
if (firstCharacter != -1)
{
string temp = mystring.Substring(firstCharacter + 5, 5);
try
{
int x = Convert.ToInt32(temp); // to ensure it is indeed a number
}
catch (Exception)
{
temp = mystring.Substring(firstCharacter + 5, 4); // it is 4 digits, not 5
}
myIssueId = temp;
}
现在我的问题是这个。如何改进此代码?它对我来说有点太乱了。任何想法将不胜感激。
答案 0 :(得分:3)
您正在寻找一些前面带有字符串“Supp-”的数字。这可以转换为正则表达式,如
(<=Supp-)\d+
您可以像myIssueId = Regex.Match(input, "(<=Supp-)\d+").Value
一样使用它。