2017-04-03 9 views
-4

文字列にaからzまでのすべてのアルファベットが含まれているかどうかをチェックするC#コードを記述する必要があります。 aからzまでのすべてのアルファベットを含むわけではないので、出力はnoです。 "abcdefghijklmnopqrstuvwxyz" aからzまでのすべてのアルファベットが含まれているので、出力はyesです。ここで文字列にaからzまでのすべての文字が含まれていることを確認してください

+2

のような拡張メソッドを使用できますか? –

+1

これまでに何を試しましたか?あなたは何をしたいのですか?すべての文字をループしてみましたか? – Emad

+1

[Stack Overflow](https://stackoverflow.com)は無料のコード作成サービスではありません。自分でコードを書くことが期待されます。さらに研究を重ねた後、問題があれば、何がうまくいかないかを明確に説明して、[最小、完全、および検証可能]を提供することができます(http://stackoverflow.com/help/ mcve)の例です。私は[質問する方法]([http://stackoverflow.com/questions/how-to-ask])[完璧な質問](http://codeblog.jonskeet.uk/2010/08/29/writing-完璧な質問/)また、[ツアー](http://stackoverflow.com/tour)を必ず取ること –

答えて

0

あなたはすでに試してみましたがこれは何

public static class StringExtensions 
{ 
    private static char[] _alphabet; 

    static StringExtensions() 
    { 
     _alphabet = "abcdefghijklmnopqrstuvwxyz".ToCharArray(); 
    } 

    public static bool ContainsAlphabet(this string input) 
    { 
     return !_alphabet 
      .Except(new HashSet<char>(input)) 
      .Any(); 
    } 
} 

"asdasd".ContainsAlphabet(); //false 
"abcdeffffghijklmnopqrstuvwxyzzz".ContainsAlphabet(); //true 
1

は、すべての文字を含む配列を初期化し、私はそれにアプローチしたい方法は次のとおりです。

char[] letters = new []{"a","b","c"...}; 

その後、あなたの文字列に存在するすべての文字を保持するリストを初期化:

List<char> lettersInString = new List<char>(); 

今ループ文字列に別の文字を追加する:

foreach (char letter in myString){if (!lettersInString.Contains(char)){lettersInString.Add(char);}} 

最後に、リストにすべてのファイルが含まれているかどうかを確認しますtter:

if (letters.All(letter=>lettersInString.Contains(letter)){DoSomething();} 

これはすべきことです!

+0

あなたの配列作成で 'new'を忘れました。 – vyrp

+0

私の間違い、良い点 –

0

私はHashSet秒でそれを行うだろう:入力は句読点などの文字でない文字を含むことができるので、私はIsSubsetOfなくEqualsを使用

bool HasAllLeters(string input) 
{ 
    var lettersInInput = new HashSet<char>(input); // or `input.ToLower()` for case insensitiveness 
    var alphabet = new HashSet<char>("abcdefghijklmnopqrstuvwxyz"); // you can actually store this as a `private static readonly` field for performance 
    return alphabet.IsSubsetOf(lettersInInput); 
} 

編集:input.ToLower()は文字列全体を割り当てていることに気付きました。代わりにinput.Select(ch => char.ToLower(ch))を使用してください。

関連する問題