2012-05-05 17 views
5

私の現在のプロジェクトでは、部分文字列で作業しなければならず、文字列から数値を取得する簡単な方法があるのだろうかと思います。文字列から特定の数値を取得する

例:私が最初に設定された数または第2の数のセットを取得するために利用できるようにしたい 12テキストテキストテキスト7

: 私はこのような文字列を持っています。 私は番号セット1を頼むならば、私はその代わりに12を得るでしょう。私がセット番号2を求めれば、私は7つの代償を得るでしょう。

ありがとうございます!

答えて

7

+0

ありがとう、ちょうど私が必要なもの! :D Btw私は新たに登録されているので、私は投票できなかったことを知らなかった。 –

+0

@TobiasLindberg:それは助けてくれてうれしいです、その場合、あなたはダウン投票を元に戻すことができます:))? –

+0

申し訳ありません、クライアント側のことでしたが、実際に投票していませんでした。再度、感謝します! –

1

Regexとよく似ています。

基本正規表現\d+(1桁以上)に一致するようになります。

Matchesコレクションを反復し、Regex.Matchesから返されたコレクションをそれぞれ解析し、順番に解析します。

var matches = Regex.Matches(input, "\d+"); 

foreach(var match in matches) 
{ 
    myIntList.Add(int.Parse(match.Value)); 
} 
1

正規表現を使用してみてください、あなたはあなたの文字列内の数字のいずれかの実行と一致します[0-9]+を一致させることができます。この正規表現を使用するC#コードは、おおよそ次のようになります。

Match match = Regex.Match(input, "[0-9]+", RegexOptions.IgnoreCase); 

// Here we check the Match instance. 
if (match.Success) 
{ 
    // here you get the first match 
    string value = match.Groups[1].Value; 
} 

もちろん、返された文字列を解析する必要があります。その後、traveseあなたがのstring.Splitを使用して部品内の文字列を分割することができ

using System.Linq; 
using System.Text.RegularExpressions; 

class Program { 
    static void Main() { 
     string text = "12 text text 7 text"; 
     int[] numbers = (from Match m in Regex.Matches(text, @"\d+") select int.Parse(m.Value)).ToArray(); 
    } 
} 
0

あなたは正規表現を使用することができますforeachにint.TryParseを適用したリスト、次のようなもの:

string test = "12 text text 7 text"; 
var numbers = new List<int>(); 
int i; 
foreach (string s in test.Split(' ')) 
{ 
    if (int.TryParse(s, out i)) numbers.Add(i); 
} 

有効な値のうち

+0

「0」は大文字であると仮定しています。 – Oded

0

、と:これは、文字列から整数の配列を作成します

Regex regex = new Regex(@"^[0-9]+$"); 
+0

こんにちは、Oded、キャッチのためにありがとう。最初の文で述べたように、TryParseでなければなりません。私はそれを修正しました。 –

関連する問題