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

C# 检查字符串是否包含数值,然后显示该值,c#,C#,用户输入: “我有三个苹果” 输出: “我” “有” “6” “苹果” 我的C#: 我需要帮助才能走上正轨。我的代码仅使用空格作为分隔符来分隔句子。下面是一个算法示例 // an extension method to check if a string is all decimal digits public static class StringHelper { public static bool IsNumeric(this string str) { i

用户输入: “我有三个苹果”

输出:
“我”
“有”
“6”
“苹果”

我的C#:


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

下面是一个算法示例

// 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();
}
请注意,该代码仅用于检查子字符串是否仅包含十进制数字。例如,它不准备处理任何带有小数点的数字,而且它也不是完全安全的。该代码未经测试,仅用于示例目的


我特意展示了一个不使用正则表达式的代码,但如果您感兴趣,请查看其他答案,以了解该替代方案。

这里有一个算法示例

// 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();
}
请注意,该代码仅用于检查子字符串是否仅包含十进制数字。例如,它不准备处理任何带有小数点的数字,而且它也不是完全安全的。该代码未经测试,仅用于示例目的

我故意展示了一个不使用正则表达式的代码,但如果您感兴趣,请查看其他答案,以了解该替代方法。

试试看

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);
您首先需要检查您吐出的字符串是否是一个数字,如果它是2的倍数,然后在输入变量中替换它以获得预期的输出。

尝试一下

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);

您首先需要检查您吐出的字符串是否是一个数字,如果它是2的倍数,然后在输入变量中替换它以获得预期的输出。

您可以尝试以下操作吗

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();

}

你能试着跟着吗

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();

}


那么你怎么知道输入字符串的格式呢?如果他们输入“我有六个苹果”怎么办?我们在谈论人工智能吗?如果他们输入“我23岁了,我有6个苹果”怎么办?它应该加倍多少?你能试试System.Text.RegularExpression.Regex.Replace(输入,“\d+”,match=>match=>(int.Parse(match.Value)*2.ToString(CultureInfo.InvariantCulture))@rory.ap吗?在这种情况下,输出看起来像:“我46岁了,我有12个苹果”,那么你怎么知道输入字符串的格式呢?如果他们输入“我有六个苹果”怎么办?我们在谈论人工智能吗?如果他们输入“我23岁了,我有6个苹果”怎么办?它应该加倍多少?你能试试System.Text.RegularExpression.Regex.Replace(输入“\d+”,match=>match=>(int.Parse(match.Value)*2.ToString(CultureInfo.InvariantCulture))@rory.ap吗?在这种情况下,输出看起来像:“我46岁了,我有12个苹果”,你可以替换
str.IsNullOrEmpty()| str.IsNullOrWhiteSpace()
只使用str.IsNullOrWhiteSpace(),因为它还检查“Empty”。谢谢,确实,我是从我的一个老助手那里复制的:)你可以用
str.IsNullOrWhiteSpace()
替换
str.IsNullOrWhiteSpace()
,因为它还检查“空”。谢谢,的确,我是从我的一位老助手那里抄来的:)我对c#很陌生,所以我不知道如何检查它。有什么可以帮助你的教程吗?谢谢。@julian我的回答中的上述解决方案应该可以做到这一点。int.TryParse检查字符串是否可以解析为数字。哎呀,我的错了。我只需要弄清楚如何部分显示字符串(使用空格分隔符)。谢谢:)如果答案有帮助,请将其标记为已接受。谢谢:)@julian-你应该能够在字符串上使用Split函数来分隔空格……我对c#很陌生,所以我不知道如何检查它。有什么可以帮助你的教程吗?谢谢。@julian我的回答中的上述解决方案应该可以做到这一点。int.TryParse检查字符串是否可以解析为数字。哎呀,我的错了。我只需要弄清楚如何部分显示字符串(使用空格分隔符)。谢谢:)如果答案有帮助,请将其标记为已接受。谢谢:)@julian-您应该能够在字符串上使用Split函数来分隔空格。。。。