Bil*_*lie 1 .net c# regex winforms
我有以下代码:
private void button_borrow_Click(object sender, EventArgs e)
{
Regex filter = new Regex(@"[0-9]*");
String items = "";
var selectedItems = checkedListBox_bookview.CheckedItems;
foreach (var item in selectedItems)
{
}
MessageBox.Show(items.ToString() + " Were selected: " + selectedItems.Count);
}
Run Code Online (Sandbox Code Playgroud)
我想从中获取匹配的字符串filter。我该怎么办?
要查找所有匹配项,您需要使用 .Matches() 并迭代返回的集合。
另一个好的做法是编译正则表达式,这样每次执行时都不会影响性能,这样做可以将其分配给类中的静态字段并使用“RegexOptions.Compiled”。
这是一个小示例,可以轻松修改它以支持您的场景:
class Program {
private static Regex _filterRegex = new Regex(@"[0-9]+", RegexOptions.Compiled);
static void Main(string[] args) {
foreach (Match match in _filterRegex.Matches("1,2,3,4,5,6")) {
Console.WriteLine("Match: " + match.Value);
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用Regex.IsMatch方法检查正则表达式是否在输入字符串中找到匹配项。例如
foreach (var item in selectedItems)
{
if (filter.IsMatch(item.ToString())
// matched
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,请记住这[0-9]*将匹配任何内容,因为您不需要在输入字符串中包含任何数字。可能你需要^\d+$
更新:获取匹配的号码:
Regex filter = new Regex(@"(\d+)");
foreach (var item in checkedListBox1.CheckedItems)
{
var match = filter.Match(item.ToString());
if (match.Success)
{
MessageBox.Show(match.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6498 次 |
| 最近记录: |