在我目前的项目中,我必须使用子字符串,我想知道是否有更简单的方法从字符串中获取数字。
实施例: 我有一个像这样的字符串: 12文本文本7文本
我希望能够获得第一个数字集或第二个数字集。 因此,如果我要求数字集1,我将获得12作为回报,如果我要求数字集2,我将获得7作为回报。
谢谢!
答案 0 :(得分: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();
}
}
答案 1 :(得分:1)
看起来很适合Regex
。
基本正则表达式将\d+
匹配(一个或多个数字)。
您将遍历从Matches
返回的Regex.Matches
集合,并依次解析每个返回的匹配。
var matches = Regex.Matches(input, "\d+");
foreach(var match in matches)
{
myIntList.Add(int.Parse(match.Value));
}
答案 2 :(得分: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;
}
您当然还需要解析返回的字符串。
答案 3 :(得分:0)
您可以使用正则表达式:
Regex regex = new Regex(@"^[0-9]+$");
答案 4 :(得分:0)
你可以使用string.Split将字符串拆分成部分,然后使用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);
}
现在数字有有效值列表