2017-08-27 5 views
-4

これで、文字以外の文字を含む変数をテストする必要があります。スペースは許されず、数字も記号もありません。私はそれを理解したと思ったが、正規表現を働かせることはできない。私が持っているものここにあります:文字のみを使用し、そうでない場合はtrueを返します。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading; 
using System.Threading.Tasks; 

namespace soro 
{ 
    class Program 
    { 
     static void notOnlyString(string word) 
     { 
      Regex.IsMatch(word, @"^[a-zA-Z]+$"); 
     } 

     static void Main(string[] args) 
     { 
      string var1; 
      //lots of code here 
      var1 = Console.ReadLine(); 
      if (notOnlyString(var1)) 
      { 
       //do this if it has a number, space or symbol; anything but 
       //letters 
      } 
      //more code 
     } 
    } 
+1

したがって、変数型(ブール値など)と戻り値についてはどう思いますか?あなたは良いC#の本やチュートリアルを使用することができるように見えます。 – CodeCaster

+1

コンパイラが問題の内容を伝えています。エラーメッセージを読んでください。 – David

+0

* regex *は問題ではありません。問題を引き起こすメソッド 'notOnlyString'のシグネチャです。それは、何も返さないはずのリターン型として無効です。代わりに、ブール値を返すことが必要です。 – HimBromBeere

答えて

1

あなたは数字がそれを

bool result = word.All(Char.IsLetterOrDigit); 
+0

これはうまくいくように思えましたが、新しいことはすべてのコードパスが値を返すわけではなく、 ------------------------------------- static bool onlyString(文字列) { bool結果= word.All(Char.IsLetter); } また、スタック交換に新しい – soro

+0

結果を返す必要があります。static bool onlyString(string word){bool result = word.All(Char.IsLetter);結果を返す。 } –

+0

omgありがとうございます と申し訳ありませんが、お粗末なコメント – soro

-1

を使用する必要がある場合は、に正規表現の構文を変更する必要があり

bool result = word.All(Char.IsLetter); 

を使用して、それをチェックすることができます-ZA [ ^ -Z] * $

素敵なオンラインツールはRegex Tester

です

希望します。 Serge

+0

何故ですか?あなたの例の唯一の違いは、1-nにマッチする間、0-n文字のマッチングです。とにかく文字列全体が一致するので、これは何の違いもありません。 – jAC

1

正規表現が正しいように見えます。あなたのコードに関する大きな間違った点の1つは、戻り値の型がnotOnlyStringです。

notOnlyStringの命名は悪いです。メソッド名として "否定"ステートメントを使用しないでください。私はIsOnlyLettersを提案する。

ifステートメントにIsOnlyLettersを呼び出しているので、boolの値を返す必要があります。

static bool notOnlyString(string word) // note that I changed "void" to "bool" 
{ 
    return Regex.IsMatch(word, @"^[a-zA-Z]+$");/here I added "return" to return the result of the "IsMatch" call. 
} 

今、あなたは(!IsOnlyLetters(var1))にif文で条件を変更する必要があり、すべてが動作するはずです。

関連する問題