如何检查两个空格之间是否有字符C#

时间:2016-05-27 16:35:30

标签: c#

我有一个字符串,想要检查是否有一个被空格包围的字母(只有一个)。我尝试使用Regex,但有些事情是不对的。

Console.Write("Write a string: ");
string s = Console.ReadLine();
string[] results = Regex.Matches(s, @" (a-zA-Z) ")
.Cast<Match>()
.Select(m => m.Groups[1].Value)
.ToArray();

我不确定我是否正确这样做我是C#

的新手

1 个答案:

答案 0 :(得分:3)

对于如此简单的操作来说,完全成熟的RegEx似乎很重要。

这是一个如何做的示例。它确实包含了很多可能对你不适用的假设(事实上我不认为字符串的开头或结尾是有效的空格,事实上我检查的是WhiteSpace而不是空白,你必须检查那些我做的假设)。

namespace ConsoleApplication4
{
  using System;
  using System.Collections.Generic;
  using System.Linq;

  public static class StringExtensions
  {
    public static IEnumerable<int> IndexOfSingleLetterBetweenWhiteSpace(this string text)
    {
      return Enumerable.Range(1, text.Length-2)
                       .Where(index => char.IsLetter(text[index]) 
                                    && char.IsWhiteSpace(text[index + 1])
                                    && char.IsWhiteSpace(text[index - 1]));
    }  
  }

  class Program
  {
    static void Main()
    {
      var text = "This is a test";

      var index = text.IndexOfSingleLetterBetweenWhiteSpace().Single();

      Console.WriteLine("There is a single letter '{0}' at index {1}", text[index], index);
      Console.ReadLine();
    }
  }
}

这应该打印

  

只有一个字母&#39; a&#39;在索引8