2016-05-27 10 views
0

文字列があり、スペースで囲まれた文字(1つだけ)があるかどうかをチェックしたい。 Regexを使ってみましたが、何かが正しくありません。2つのスペースの間に文字があるかどうかをチェックする方法C#

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

それは\ S' wは '\ S \よりあらゆる困難にすることはできますか? – Will

+4

あなたは '@" [a-zA-Z] "'を使うつもりです。あなたが持っているものは、文字通り "a-zA-Z"を探しています。 – juharr

+0

また、「文字」とは、任意の文字を意味しますか?または単に 'a-z'と' A-Z'ですか? – Icemanind

答えて

3

本格正規表現に新しいですかわからないが、このような簡単な操作のために重いもののようです。

これはサンプルです。あなたには当てはまらないかもしれない多くの仮定が含まれています(文字列の開始または終了を有効な空白とみなさないという事実、空白の代わりに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(); 
    } 
    } 
} 

これは '' のインデックスの1文字があり

印刷する必要があります8

関連する問題