私の現在のプロジェクトでは、部分文字列を使って多くの作業を行う必要がありますが、文字列から数値を取得する簡単な方法があるかどうか疑問に思っています。
例:次のような文字列があります:12 text text 7 text
最初の番号セットまたは2番目の番号セットを取得できるようにしたいと思います。したがって、番号セット1を要求すると、12が返され、番号セット2を要求すると、7が返されます。
ありがとう!
これにより、文字列から整数の配列が作成されます。
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();
}
}
によく一致するようですRegex
。
基本的な正規表現は\d+
、(1桁以上の)一致することです。
Matches
から返されたコレクションを繰り返し処理し、返されRegex.Matches
た各一致を順番に解析します。
var matches = Regex.Matches(input, "\d+");
foreach(var match in matches)
{
myIntList.Add(int.Parse(match.Value));
}
正規表現を使用してみて[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;
}
もちろん、返された文字列を解析する必要があります。
正規表現を使用できます:
Regex regex = new Regex(@"^[0-9]+$");
string.Splitを使用して文字列を部分的に分割してから、次のようにint.TryParseを適用するforeachを使用してリストをトラバースできます。
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);
}
これで、数値に有効な値のリストが表示されます