Megosztás a következőn keresztül:


Sztring átalakítása számmá (C# programozási útmutató)

Számmá alakíthatja string a számokat a Parse TryParse numerikus típusok (intstb.) meghívásával, longdoublevagy az System.Convert osztály metódusainak használatával.

Egy metódus (például) vagy Parse metódus (példáulvar number = int.Parse("11")int.TryParse("11", out number)) meghívása TryParse valamivel hatékonyabb és egyszerűbb. Convert A metódus használata hasznosabb a implementálható IConvertibleáltalános objektumok esetében.

A sztring által várt numerikus típust vagy metódusokat használjaParse, például a típustSystem.Int32.TryParse A Convert.ToInt32 metódus belsőleg használ Parse . A Parse metódus a konvertált számot adja vissza; a TryParse metódus egy logikai értéket ad vissza, amely jelzi, hogy az átalakítás sikeres volt-e, és egy paraméterben out visszaadja az átalakított számot. Ha a sztring nem érvényes formátumban van, Parse kivételt jelez, de TryParse visszaadja false. Metódus meghívásakor Parse mindig kivételkezelést kell használnia az FormatException elemzési művelet meghiúsulása esetén.

Elemzési vagy TryParse metódusok meghívása

A Parse metódusok figyelmen TryParse kívül hagyják a sztring elején és végén lévő üres szóközt, de minden más karakternek a megfelelő numerikus típust (int, , , ulonglong, floatstbdecimal.) alkotó karaktereknek kell lennie. A számot formázó sztringen belüli üres szóköz hibát okoz. Használhatja például a "10", decimal.TryParse a "10,3" vagy a " 10 " elemzését, de ezzel a módszerrel nem elemezheti a 10-et a "10X", "1 0" (jegyezze fel a beágyazott területet), a "10.3" (jegyezze fel a beágyazott területet), a "10e1" (float.TryParse itt működik), és így tovább. Olyan sztring, null String.Empty amelynek értéke vagy nem elemezheti sikeresen. A metódus meghívásával ellenőrizheti, hogy van-e null vagy üres sztring, mielőtt megkísérelné elemezni.String.IsNullOrEmpty

Az alábbi példa a sikeres és sikertelen hívásokat Parse TryParsemutatja be.

using System;

public static class StringConversion
{
    public static void Main()
    {
        string input = String.Empty;
        try
        {
            int result = Int32.Parse(input);
            Console.WriteLine(result);
        }
        catch (FormatException)
        {
            Console.WriteLine($"Unable to parse '{input}'");
        }
        // Output: Unable to parse ''

        try
        {
            int numVal = Int32.Parse("-105");
            Console.WriteLine(numVal);
        }
        catch (FormatException e)
        {
            Console.WriteLine(e.Message);
        }
        // Output: -105

        if (Int32.TryParse("-105", out int j))
        {
            Console.WriteLine(j);
        }
        else
        {
            Console.WriteLine("String could not be parsed.");
        }
        // Output: -105

        try
        {
            int m = Int32.Parse("abc");
        }
        catch (FormatException e)
        {
            Console.WriteLine(e.Message);
        }
        // Output: Input string was not in a correct format.

        const string inputString = "abc";
        if (Int32.TryParse(inputString, out int numValue))
        {
            Console.WriteLine(numValue);
        }
        else
        {
            Console.WriteLine($"Int32.TryParse could not parse '{inputString}' to an int.");
        }
        // Output: Int32.TryParse could not parse 'abc' to an int.
    }
}

Az alábbi példa egy olyan sztring elemzésének egyik megközelítését szemlélteti, amely az első numerikus karaktereket (beleértve a hexadecimális karaktereket) és a záró nem numerikus karaktereket is magában foglalja. A metódus meghívása TryParse előtt egy sztring elejétől érvényes karaktereket rendel egy új sztringhez. Mivel az elemezni kívánt sztringek néhány karaktert tartalmaznak, a példa meghívja a String.Concat metódust, hogy érvényes karaktereket rendeljen egy új sztringhez. Nagyobb sztring esetén az StringBuilder osztály használható helyette.

using System;

public static class StringConversion
{
    public static void Main()
    {
        var str = "  10FFxxx";
        string numericString = string.Empty;
        foreach (var c in str)
        {
            // Check for numeric characters (hex in this case) or leading or trailing spaces.
            if ((c >= '0' && c <= '9') || (char.ToUpperInvariant(c) >= 'A' && char.ToUpperInvariant(c) <= 'F') || c == ' ')
            {
                numericString = string.Concat(numericString, c.ToString());
            }
            else
            {
                break;
            }
        }

        if (int.TryParse(numericString, System.Globalization.NumberStyles.HexNumber, null, out int i))
        {
            Console.WriteLine($"'{str}' --> '{numericString}' --> {i}");
        }
        // Output: '  10FFxxx' --> '  10FF' --> 4351

        str = "   -10FFXXX";
        numericString = "";
        foreach (char c in str)
        {
            // Check for numeric characters (0-9), a negative sign, or leading or trailing spaces.
            if ((c >= '0' && c <= '9') || c == ' ' || c == '-')
            {
                numericString = string.Concat(numericString, c);
            }
            else
            {
                break;
            }
        }

        if (int.TryParse(numericString, out int j))
        {
            Console.WriteLine($"'{str}' --> '{numericString}' --> {j}");
        }
        // Output: '   -10FFXXX' --> '   -10' --> -10
    }
}

Konvertálási metódusok meghívása

Az alábbi táblázat felsorol néhány metódust az Convert osztályból, amelyekkel sztringet alakíthat számmá.

Numerikus típus Metódus
decimal ToDecimal(String)
float ToSingle(String)
double ToDouble(String)
short ToInt16(String)
int ToInt32(String)
long ToInt64(String)
ushort ToUInt16(String)
uint ToUInt32(String)
ulong ToUInt64(String)

Az alábbi példa meghívja a metódust egy Convert.ToInt32(String) bemeneti sztring intre való konvertálásához. A példa a módszer által leggyakrabban alkalmazott két kivételt fogja meg: FormatException ésOverflowException. Ha az eredményül kapott szám túllépése Int32.MaxValuenélkül növelhető, a példa 1-et ad hozzá az eredményhez, és megjeleníti a kimenetet.

using System;

public class ConvertStringExample1
{
    static void Main(string[] args)
    {
        int numVal = -1;
        bool repeat = true;

        while (repeat)
        {
            Console.Write("Enter a number between −2,147,483,648 and +2,147,483,647 (inclusive): ");

            string? input = Console.ReadLine();

            // ToInt32 can throw FormatException or OverflowException.
            try
            {
                numVal = Convert.ToInt32(input);
                if (numVal < Int32.MaxValue)
                {
                    Console.WriteLine("The new value is {0}", ++numVal);
                }
                else
                {
                    Console.WriteLine("numVal cannot be incremented beyond its current value");
                }
           }
            catch (FormatException)
            {
                Console.WriteLine("Input string is not a sequence of digits.");
            }
            catch (OverflowException)
            {
                Console.WriteLine("The number cannot fit in an Int32.");
            }

            Console.Write("Go again? Y/N: ");
            string? go = Console.ReadLine();
            if (go?.ToUpper() != "Y")
            {
                repeat = false;
            }
        }
    }
}
// Sample Output:
//   Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive): 473
//   The new value is 474
//   Go again? Y/N: y
//   Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive): 2147483647
//   numVal cannot be incremented beyond its current value
//   Go again? Y/N: y
//   Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive): -1000
//   The new value is -999
//   Go again? Y/N: n

Sztring számmá alakítása a GitHub Copilot használatával

Az IDE-ben a GitHub Copilot használatával kódot hozhat létre egy sztring számmá alakításához C#-ban.

Ha a Visual Studio 2022 17.8-s vagy újabb verzióját használja, kipróbálhatja a Visual Studióban az AI-alapú GitHub Copilotot, hogy egy sztringet számmá alakítson. Küldje el kérdését kérdésként a Copilot csevegőablakában, ahogyan az alábbi példában is látható. A szerkesztőablakban beágyazott csevegéssel is küldhet kéréseket.

Feljegyzés

A GitHub Copilot mesterséges intelligenciával működik, így meglepetések és hibák lehetségesek. Ellenőrizze a létrehozott kódot vagy javaslatokat. A GitHub Copilot általános használatáról, a termék hatásáról, az emberi felügyeletről és az adatvédelemről további információt a GitHub Copilot gyakori kérdések című témakörében talál.

Az alábbi szöveg egy példakérést jelenít meg a Copilot-csevegéshez:

C#-kód létrehozása a "123" sztring számmá alakításához a TryParse használatával. Adjon meg példakimenetet.

A kérés testre szabható, hogy a követelményeknek megfelelően sztringet használjon.

A csevegési funkciók, például perjelparancsok, fájlokra, metódusokra, osztályokra és szálakra mutató hivatkozások használatával szándékot állíthat be, és jobb válaszokat kaphat a hatókörrel rendelkező környezettel. Az IDE-ben megnyitott meglévő fájlok esetén a GitHub Copilotot inline csevegéssel /generate code to convert the string string1 in #Filename to a numberkérheti.

Az alábbi kimenet egy példa Copilot Chat-választ mutat be:

Here is a C# code snippet to convert the string "123" to a number using TryParse:

using System;

class Program
{
    static void Main()
    {
        string numberString = "123";
        int number;
        bool success = int.TryParse(numberString, out number);
        
        if (success)
        {
            // Example output
            Console.WriteLine("The converted number is: " + number);
        }
        else
        {
            Console.WriteLine("Conversion failed.");
        }
    }
}

When you run this code, the output will be:
The converted number is: 123

Amikor a Copilot egy kódblokkot ad vissza, a válasz tartalmazza a kód másolásának, a kód új fájlba való beszúrásának vagy a kód kimenetének előnézetét.

Feljegyzés

Az eredmények eltérhetnek a példaválaszokban láthatótól. Az AI-modellek nem determinisztikusak, ami azt jelenti, hogy eltérő válaszokat adhatnak vissza, ha ugyanazt a kérdést teszik fel. Ennek oka lehet a további tanulás és alkalmazkodás az idő függvényében, a nyelvi változat, a kontextus változásai, például a csevegési előzmények stb.

Képernyőkép arról, hogy a GitHub Copilot Chat használatával a Visual Studióban számmá alakíthat egy sztringet.

További információk: