полномасштабная RegEx, кажется, тяжелый материал для такой простой операции.
Это пример того, как это сделать. Он включает в себя множество предположений, которые могут быть неверными для вас (тот факт, что я не считаю начало или конец строки допустимым пробелом, факт, что я проверяю WhiteSpace вместо пустого, вам придется проверить эти предположения I сделал).
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();
}
}
}
Это должно напечатать
Существует одна буква 'а' с индексом 8
Может быть тяжелее, чем '\ s \ ш \ s'? – Will
Вы хотели использовать '@" [a-zA-Z] ". То, что у вас есть, буквально ищет «a-zA-Z». – juharr
Кроме того, по словам «персонажа», вы имеете в виду любого персонажа? Или просто 'a-z' и' A-Z'? – Icemanind