-1

我是 C# 编程的新手,现在我有一个关于我的一个项目的问题。我必须获取字符串中的第一个数字,然后将其转换为摩尔斯电码。

这是一个例子:

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

我怎么得到这个?提前致谢

4

2 回答 2

4

使用 Linq,第一个字符是:

char 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;
    }
}

输出是:

...--

于 2016-04-10T16:29:22.240 回答
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)然后会给你号码。

字符串中查找并提取一个数字

于 2016-04-10T15:52:48.000 回答