从字符串中提取多个空格

时间:2015-09-01 10:40:02

标签: c# regex

我希望获得大于1个空格的空白区域。

以下内容为我提供了每个字母之间的空字符,以及白色空格。但是,我只想提取cd之间的两个空格字符串,以及fg之间的3个空格字符串。

string b = "ab c  def   gh";
List<string> c = Regex.Split(b, @"[^\s]").ToList();

更新: 以下是有效的,但我正在寻找一种更优雅的方法来实现这一目标:

c.RemoveAll(x => x == "" || x == " ");

所需的结果是List<string>包含" "" "

5 个答案:

答案 0 :(得分:5)

如果您希望<form action='form.php' method='get'> <input type='text' name='user' value=''><br> <input type='number' name='age' value=''><br> <input type='radio' name='user' value='male'> <input type='radio' name='user' value='female'><br> <input type='submit' value='Submit'> </form> 作为结果,则可以执行此 Linq 查询

List<String>

答案 1 :(得分:3)

这应该会为您提供所需的清单。

string b = "ab c  def   gh";
var regex = new Regex(@"\s\s+");
var result = new List<string>();
foreach (Match m in regex.Matches(b))
    result.Add(m.Value);

答案 2 :(得分:2)

不要使用正则表达式进行拆分,而是尝试使用Regex.Matches来获取与您的模式匹配的所有项目 - 在这种情况下,我使用了一个模式来匹配两个或更多的空白字符,我认为这就是您想要的?

    var matchValues = Regex.Matches("ab c   def    gh", "\\s\\s+")
        .OfType<Match>().Select(m => m.Value).ToList();

令人讨厌的是,MatchCollection返回的Regex.Matches不是IEnumerable<Match>,因此需要在LINQ表达式中使用OfType<>

答案 3 :(得分:2)

如果你感兴趣的是这些空格组,你可以使用

foreach(var match in Regex.Matches(b, @"\s\s+")) {
    // ... do something with match
}

这可以保证您至少匹配2个空格。

答案 4 :(得分:1)

您可以使用以下单行:

var list =Regex.Matches(value,@"[ ]{2,}").Cast<Match>().Select(match => match.Value).ToList();


希望它会对你有所帮助。