我有一个字符串,想要检查是否有一个被空格包围的字母(只有一个)。我尝试使用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#
的新手答案 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