如何检查C#中的字符串是否包含大于9的数字

时间:2017-03-28 19:45:11

标签: c# regex string

我正在尝试检查未知大小的单个字符串,看它们是否包含小于9但大于1的数字,并且有数字分隔的空格。例如。

SELECT user.*, 
xxx.record_count 
FROM `user`
JOIN ( select user_id, count(*) as record_count from `transaction`
where transaction.type='L' AND transaction.status='S' 
group by user_id) xxx
 ON xxx.user_id = user.id 
 WHERE (user.rating >= '6' OR xxx.record_count >= '100') 
 AND user.country = 'US' 
AND 1 IN (user.can_borrow , user.can_lend);

字符串2和3包含我不希望分别为“66”和“0”的数字。

我目前正在使用嵌套的if语句,但我认为使用Regex会有更好的方法,但我是Regex表示法的新手,所以不要太多。

有更好的方法吗?。

为了使问题清楚,我试图找出一个字符串是否包含大于9或小于1的任何数字。其中字符串在每个数字之间包含空格。

3 个答案:

答案 0 :(得分:2)

RegEx是错误的工具。尝试在空间上拆分字符串,并使用您想要将字符串数组的各个元素转换为int的任何方法。在这里我选择了LINQ。

这是我的头脑。你可能需要调整它来编译。

//assuming your strings are in a List<String>
List<string> strings = ...;
List<int> numbers = null;

// assumes you want to work with each set of numbers individually
foreach (string item in strings) {
    numbers = (from n in item.Split(" ") select int.Parse(n)).ToList();
    // TODO: remove numbers out of range, or whatever other processing you want to do.
}

答案 1 :(得分:0)

首先将您的字符串转换为整数列表,然后使用linq查找大于9的所有数字.TrreadParse将捕获任何不是数字的字符串并将它们设置为-1。

int i; 
List<int> intList = stringArray.Split(' ').Select(s => int.TryParse(s, out i) ? i : -1).ToList();
var results = intList.FindAll(x=> x > 9);

答案 2 :(得分:-3)

WiktorStribiżew提供的答案对我有用,谢谢你的帮助。

Regex.IsMatch(numScreens, @"\b[0-9]{2,}\b")