检查字符串是否包含数值,然后显示doubleed值

时间:2017-01-20 17:41:37

标签: c#

用户输入: "我有3个苹果"

输出:
" I"
"具有"
" 6"
"苹果"

我的C#:

  static void Main(string[] args)
        {
            Console.WriteLine("Enter a string...");
            string delimeter = " ";
            string input = Console.ReadLine();
            string[] output = input.Split(Convert.ToChar(delimeter));

            foreach (var substring in output)
            {               
                Console.WriteLine(substring);
            }
            Console.Read();
        }

我需要帮助才能走上正轨。我的代码只使用空格作为分隔符来区分句子。

3 个答案:

答案 0 :(得分:1)

试一试

foreach (var substring in output)
{               
    int value;
    if(int.TryParse(substring, out value)){
        value = value * 2;
        input = input.Replace(substring, value.ToString());
    }
}
Console.WriteLine(input);

首先需要检查您的spitted字符串是否为数字,如果它是2,则将其替换为输入变量以获得预期的输出。

答案 1 :(得分:1)

你可以尝试跟进吗?

static void Main(string[] args)
{
        Console.WriteLine("Enter a string...");
        string delimeter = " ";
        string input = Console.ReadLine();
        var result =  System.Text.RegularExpression.Regex.Replace(input,"\d+", match=>(int.Parse(match.Value)*2).ToString(CultureInfo.InvariantCul‌​ture));
        Console.WriteLine(result); 
         Console.Read();

}

答案 2 :(得分:0)

这是一个算法,例如。

// an extension method to check if a string is all decimal digits
public static class StringHelper {
    public static bool IsNumeric(this string str)
    {
        if (str.IsNullOrWhiteSpace()) return false;
        return str.All(char.IsNumber);
    }
}

...

static void Main(string[] args)
{
    Console.WriteLine("Enter a string...");
    string delimeter = " ";
    string input = Console.ReadLine();
    string[] output = input.Split(Convert.ToChar(delimeter));

    foreach (var substring in output)
    {               
        if (substring.IsNumeric())
        {
            substring = (int.Parse(substring) * 2).ToString();
        }
        Console.Write(substring);
    }
    Console.WriteLine();
    Console.Read();
}

请注意,代码仅检查子字符串是否仅包含十进制数字。例如,它没有准备好处理带小数点的任何数字,并且它也不是完全安全的。代码未经过测试,仅用于示例目的。

我故意在不使用正则表达式的情况下显示代码,但如果您对此感兴趣,请查看其他答案。