在字母表之前删除字符串

时间:2017-04-11 06:53:55

标签: asp.net asp.net-mvc string asp.net-mvc-4 c#-4.0

我想在字母出现之前删除字符或字符串。

例如考虑

  

“ - Test-T1”,“--- Test-T2”,“---- Test-T3”。

在上面的字符串中,我想在字母表开始之前删除连字符,并希望在此之后保留连字符。我尝试了substring,删除了LastIndexOf()+1Regex.Replace,但没有一个可行。请指导我如何实现它。

1 个答案:

答案 0 :(得分:4)

如果您只想从字符串的开头删除-符号,仅仅

var res = s.TrimStart('-');

会做的。如果您需要确保在前导连字符后面有字母,请使用正则表达式:

var res = Regex.Replace(s, @"^-+(?=[a-zA-Z])", "");

在这里,

  • ^ - 在字符串开始处断言位置
  • -+ - 匹配并使用1 +连字符
  • (?=[a-zA-Z]) - 正向前瞻检查连字符后面是否有ASCII字母(但不使用字母,它不是匹配值的一部分)。

或者,使用基于捕获组的版本:

var res = Regex.Replace(s, @"^-+([a-zA-Z])", "$1");

此处,字母已被消费,但由于我们已将其捕获,$1会在结果中恢复该字母。

请注意,[a-zA-Z]可以替换为\p{L}以匹配任何Unicode字母。