C# 程式設計 字串抓數字

手上要完成一支程式

用C# 如何在字串中,取出數字

例如:retange_12 yom3 105488 49621 ;

要怎麼寫,才可以抓到 後面兩個數字,

已更新項目:

感謝兩位大大的解答

目前研究中

因為小弟用的是visual studio 版本

所以是視窗寫的,不是用DOS跑

可能這樣生鏽大大的程式碼

跑不出來

沒馬上奉上點數,請見諒

3 個解答

評分
  • 生鏽
    Lv 5
    1 0 年前
    最佳解答

    用 Split 把字串分開,然後 Convert 類別可以幫你轉換數字:

    using System;

    using System.Collections.Generic;

    namespace ConsoleApplication2

    {

    class Program

    {

    static List<decimal> GetNumbers(string str)

    {

    string[] tokens = str.Split(' ');

    List<decimal> numbers = new List<decimal>();

    foreach (string token in tokens)

    {

    try

    {

    numbers.Add(Convert.ToDecimal(token));

    }

    catch

    {

    }

    }

    return numbers;

    }

    static void Main(string[] args)

    {

    List<decimal> numbers = GetNumbers("retange_12 yom3 105488 49621 ;");

    foreach (decimal number in numbers)

    Console.WriteLine(number);

    Console.ReadKey();

    }

    }

    }

    2008-03-11 10:57:38 補充:

    上面的程式在視窗中還是可以跑呀,假如你想問的是 retange_12.exe 後面跟著三個參數,想要判別參數的數字。main(string[] args) 裡面帶進來的 args 就是參數,所以你不需要 split 了:

    static List GetNumbers(string[] tokens)

    {

    List numbers = new List ();

    foreach (string token in tokens)

    2008-03-11 10:57:53 補充:

    {

    try

    {

    numbers.Add(Convert.ToDecimal(token));

    }

    catch

    {

    }

    }

    return numbers;

    }

    2008-03-11 10:58:23 補充:

    呼叫時,直接用 args:

    static void Main(string[] args)

    {

    List numbers = GetNumbers(args);

    ...

    2008-03-11 11:02:22 補充:

    上面的 List 是 List<decimal> ...知識+ 吃掉大小於符號 :(

    假如其它類別的程式想要知道 numbers,可以把 List<decimal> numbers 改變成為 class 的 static private member,另外建一個 static public property get,這樣其他類別就可以取得數值了。

  • 1 0 年前

    也可以用int.Parse(string s);

    借用"生鏽"的code 就變成如下

    ====================================================

    using System;

    using System.Collections.Generic;

    namespace ConsoleApplication1

    {

    class Program

    {

    static void Main(string[] args)

    {

    List<int> numbers = GetNumbers("retange_12 yom3 105488 49621");

    foreach (int number in numbers)

    Console.WriteLine(number);

    Console.ReadKey();

    }

    static List<int> GetNumbers(string str)

    {

    List<int> numbers = new List<int>();

    foreach (string token in str.Split(' '))

    {

    try

    {

    numbers.Add(int.Parse(token));

    }

    catch

    {

    }

    }

    return numbers;

    }

    }

    }

    ====================================================

    其實也大同小異

    就多一種選擇

    當參考

  • Thomas
    Lv 6
    1 0 年前

    寫了太細了ㄅ 連 try-catch block 都用上

    ~Kai~ 會了解 "生鏽 " 你寫的ㄇ

還有問題?馬上發問,尋求解答。