2016-04-10 4 views
-1

私はC#でプログラミングするのが初めてで、今は自分のプロジェクトについて質問があります。 文字列の最初の桁を取得してから、それをモールス符号に変換する必要があります。ここでc#文字列の最初の数字を取得してモールス符号に変換する必要があります

は例です:

Hello123 --> I need "1" 
Bye45 --> I need "4" 

は、どのように私はこれを得るのですか?ありがとうございます。

+0

SO上で助けを求める、あなたは問題を解決するために、独自の努力を示さなければなりません。あなたの宿題を質問に投げ捨て、助けを期待しているのは、私たちがここでどのように手伝っているかではありません。 – Maverik

答えて

3

から

である:

チャーfirstDigit = this.Message.FirstOrDefault(C => char.IsDigit(c)参照)。

次に、数字をモールス符号に変換するための辞書を作成します。

class Program 
{ 
    static void Main(string[] args) 
    { 
     const string text = "abcde321x zz"; 
     var morse = new Morse(text); 
     Console.WriteLine(morse.Code); 
    } 
} 

class Morse 
{ 
    private static Dictionary<char, string> Codes = new Dictionary<char, string>() 
    { 
     {'1', ".----"}, {'2', "..---"}, {'3', "...--"}, {'4', "....-"}, 
     {'5', "....."}, {'6', "-...."}, {'7', "--..."}, {'8', "---.."}, 
     {'9', "----."}, {'0', "-----"} 
    }; 
    private string Message; 
    public string Code 
    { 
     get 
     { 
      char firstDigit = this.Message.FirstOrDefault(c => char.IsDigit(c)); 
      return Codes.ContainsKey(firstDigit) ? Codes[firstDigit] : string.Empty; 
     } 
    } 
    public Morse(string message) 
    { 
     this.Message = message; 
    } 
} 

出力は次のとおりです。

...--

0

\d+は整数の正規表現です。だから、

//System.Text.RegularExpressions.Regex

resultString = Regex.Match(subjectString, @"\d+").Value; 
returns a string containing the first occurrence of a number in subjectString. 

Int32.Parse(resultString)その後、あなたに番号を与えます。 LINQの、最初の文字を使用しFind and extract a number from a string

関連する問題