我目前正在尝试剥离可能包含连字符的数据字符串。
E.g. Basic logic:
string stringin = "test - 9894"; OR Data could be == "test";
if (string contains a hyphen "-"){
Strip stringin;
output would be "test" deleting from the hyphen.
}
Console.WriteLine(stringin);
我正在尝试使用的当前C#代码如下所示:
string Details = "hsh4a - 8989";
var regexItem = new Regex("^[^-]*-?[^-]*$");
string stringin;
stringin = Details.ToString();
if (regexItem.IsMatch(stringin)) {
stringin = stringin.Substring(0, stringin.IndexOf("-") - 1); //Strip from the ending chars and - once - is hit.
}
Details = stringin;
Console.WriteLine(Details);
但是当字符串不包含任何连字符时,会引发错误。
最佳答案
您的正则表达式要求“-的零个或一个重复”,这意味着即使您的输入不包含连字符,它也可以匹配。之后,您执行此操作
stringin.Substring(0, stringin.IndexOf("-") - 1)
给出索引超出范围的异常(找不到连字符)。
对您的正则表达式进行简单的更改,无论是否使用它,都可以使用-询问“一个或多个连字符”:
var regexItem = new Regex("^[^-]*-+[^-]*$");
here -------------------------^