我目前正在尝试剥离可能包含连字符的数据字符串。

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 -------------------------^

09-28 08:16