c# scanf能處理多種格式嗎

c#
小樊
81
2024-10-18 12:22:25
欄目: 編程語言

scanf 是 C 語言中的一個(gè)函數(shù),用于從標(biāo)準(zhǔn)輸入(通常是鍵盤)讀取數(shù)據(jù)并格式化。它非常靈活,可以處理多種格式的輸入。然而,C# 中沒有與 scanf 完全對(duì)應(yīng)的函數(shù)。在 C# 中,處理輸入的主要方法是使用 Console.ReadLine()Console.ReadKey() 方法讀取用戶輸入的字符串,然后使用 string.Split() 方法將字符串分割成多個(gè)部分,最后使用 int.Parse()double.Parse() 等方法將字符串轉(zhuǎn)換為相應(yīng)的數(shù)據(jù)類型。

如果你需要在 C# 中處理多種格式的輸入,你可以考慮使用正則表達(dá)式(Regex)來匹配不同的格式,并根據(jù)匹配結(jié)果執(zhí)行相應(yīng)的操作。例如,你可以使用正則表達(dá)式來匹配整數(shù)、浮點(diǎn)數(shù)、科學(xué)計(jì)數(shù)法等不同的數(shù)字格式。

下面是一個(gè)簡(jiǎn)單的示例,展示了如何在 C# 中使用正則表達(dá)式處理多種格式的數(shù)字輸入:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        Console.WriteLine("請(qǐng)輸入一個(gè)整數(shù)、浮點(diǎn)數(shù)或科學(xué)計(jì)數(shù)法表示的數(shù)字:");
        string input = Console.ReadLine();

        // 匹配整數(shù)
        int intValue;
        if (int.TryParse(input, out intValue))
        {
            Console.WriteLine($"你輸入的整數(shù)是:{intValue}");
            return;
        }

        // 匹配浮點(diǎn)數(shù)
        double doubleValue;
        if (double.TryParse(input, out doubleValue))
        {
            Console.WriteLine($"你輸入的浮點(diǎn)數(shù)是:{doubleValue}");
            return;
        }

        // 匹配科學(xué)計(jì)數(shù)法表示的數(shù)字
        string scientificValue = Regex.Replace(input, @"^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$", "");
        double sciValue;
        if (double.TryParse(scientificValue, out sciValue))
        {
            Console.WriteLine($"你輸入的科學(xué)計(jì)數(shù)法數(shù)字是:{sciValue}");
            return;
        }

        Console.WriteLine("輸入的格式不正確。");
    }
}

這個(gè)示例首先嘗試將用戶輸入的字符串解析為整數(shù)或浮點(diǎn)數(shù)。如果失敗,它將嘗試使用正則表達(dá)式去除科學(xué)計(jì)數(shù)法中的非數(shù)字字符,然后再次嘗試將字符串解析為浮點(diǎn)數(shù)。如果所有嘗試都失敗,它將輸出一條錯(cuò)誤消息。

0