相关疑难解决方法(0)

如何在C#Regex中获取捕获组的名称?

有没有办法在C#中获取捕获组的名称?

string line = "No.123456789  04/09/2009  999";
Regex regex = new Regex(@"(?<number>[\d]{9})  (?<date>[\d]{2}/[\d]{2}/[\d]{4})  (?<code>.*)");

GroupCollection groups = regex.Match(line).Groups;

foreach (Group group in groups)
{
    Console.WriteLine("Group: {0}, Value: {1}", ???, group.Value);
}
Run Code Online (Sandbox Code Playgroud)

我想得到这个结果:

Group: [I don´t know what should go here], Value: 123456789  04/09/2009  999
Group: number, Value: 123456789
Group: date,   Value: 04/09/2009
Group: code,   Value: 999

c# regex

95
推荐指数
4
解决办法
6万
查看次数

解析格式化的字符串

我正在尝试创建一个通用的格式化程序/解析器组合.

示例场景:

  • 我有一个string.Format()的字符串,例如 var format = "{0}-{1}"
  • 我有一个输入的对象(字符串)数组,例如 var arr = new[] { "asdf", "qwer" }
  • 我正在使用格式字符串格式化数组,例如 var res = string.Format(format, arr)

我想要做的是将格式化的字符串恢复回对象(字符串)数组.像(伪代码)的东西:

var arr2 = string.Unformat(format, res)

// when: res = "asdf-qwer"    
// arr2 should be equal to arr
Run Code Online (Sandbox Code Playgroud)

有没有经验做过这样的事情?我正在考虑使用正则表达式(修改原始格式字符串,然后将其传递给Regex.Matches以获取数组)并为格式字符串中的每个占位符运行它.这是可行的还是还有其他更有效的解决方案?

c# regex string

15
推荐指数
2
解决办法
2万
查看次数

String.Format的反转?

可能重复:
解析格式化的字符串.

如何使用String.Format格式并将其输出转换为输入?

例如:

string formatString = "My name is {0}.  I have {1} cow(s).";

string s = String.Format(formatString, "strager", 2);

// Call the magic method...
ICollection<string> parts = String.ReverseFormat(formatString, s);
// parts now contains "strager" and "2".
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用正则表达式来执行此操作,但我想使用相同的格式字符串,因此我只需要维护一行代码而不是两行代码.

.net c# string

9
推荐指数
1
解决办法
1万
查看次数

RegEx从HTML内容中获取href和src?

我试图从HTML字符串中提取href和src链接.根据这篇文章,我能够得到图像部分.任何人都可以帮助调整正则表达式以包含集合中的href URL吗?

public List<string> GetLinksFromHtml(string content)
{
    string regex = @"<img[^>]*?src\s*=\s*[""']?([^'"" >]+?)[ '""][^>]*?>";
    var matches = Regex.Matches(content, regex, RegexOptions.IgnoreCase | RegexOptions.Singleline);
    var links = new List<string>();

    foreach (Match item in matches)
    {
        string link = item.Groups[1].Value;
        links.Add(link);
    }

    return links;
}
Run Code Online (Sandbox Code Playgroud)

html c# regex html-parsing

5
推荐指数
1
解决办法
1万
查看次数

C# 正则表达式字符串解析

我已经写好了表达式,但是每当我运行代码时,我都会得到整个字符串和一大堆空值:

Regex regex = new Regex(@"y=\([0-9]\)\([0-9]\)(\s|)\+(\s+|)[0-9]");
Match match = regex.Match("y=(4)(5)+6");

for (int i = 0; i < match.Length; i++)
{
    MessageBox.Show(i+"---"+match.Groups[i].Value);
}
Run Code Online (Sandbox Code Playgroud)

预期输出:4、5、6(在不同的 MessageBox 中)

实际输出:y=(4)(5)+6

它查找输入的字符串是否正确,但一旦正确,我就无法获得特定值(4、5 和 6)。我该怎么做才能获得该代码?这可能是非常简单的事情,但我已经尝试查看 MSDN match.NextMatch 文章,这似乎也无济于事。

谢谢!

.net c# regex

5
推荐指数
1
解决办法
2万
查看次数

正则表达式,用于查找C#类和方法名称

我正在编写一个影响分析工具,它将解析一堆选定的文件类型,并在文件中找到类和方法调用(在本例中为.cs文件).我设法编写了一个正则表达式,可以找到一行代码是否为方法调用.

Regex re = new Regex(
               @"\b(public|private|internal|protected)\s*" +
                "(static|virtual|abstract)?\s*[a-zA-Z]*\s[a-zA-Z]+\s*" +
                "\((([a-zA-Z\[\]\<\>]*\s*[a-zA-Z]*\s*)[,]?\s*)+\)");
Run Code Online (Sandbox Code Playgroud)

然而; 我无法弄清楚如何从正则表达式中获取方法名称.它将一行识别为匹配,但如何提取实际方法名称.对此的任何帮助都会很棒.

此外; 我不确定这是不是它实际上是如何完成的,但还有其他(最新的)c#文件解析器能够从文件中提供方法名称和类名列表吗?

c# regex parsing

3
推荐指数
1
解决办法
6295
查看次数

C# - 拆分字符串的问题

我有一组基于我分割字符串的值

string[] seperator = new string[9];
        seperator[0] = "*";  //is the client
        seperator[1] = "/";  //is the name of company
        seperator[2] = "(";     //name of the market    
        seperator[5] = ":";    //ID
        seperator[6] = "?";    //orderType
        seperator[3] = "!@";   //realtive Time
        seperator[4] = "!+";   //
        seperator[7] = "+";    //quantity
        seperator[8] = "@";//price
string[] result = values.Split(seperator, StringSplitOptions.None);
Run Code Online (Sandbox Code Playgroud)

例如:输入字符串是*A/AB(M!@ 12:6?SIMPLE!+ 5 + 2

OUTPUT
    [0]: ""
    [1]: "A"
    [2]: "AB"
    [3]: "M"
    [4]: "12"
    [5]: "6"
    [6]: "SIMPLE"
    [7]: "5"
    [8]: "2" …

c# string split

1
推荐指数
1
解决办法
420
查看次数

字符串中的和数

Dim strOrig = "192/8' 33/5' 76/24' 17/12'"
Run Code Online (Sandbox Code Playgroud)

大家好,我想在"/"之前获得每个数字.输出将是318.关于如何实现它,我能想到的是:

1.通过查找"间距"作为每个段的终点并将它们放入数组中来拆分所有段.例如(0)192/8,(1)33/5,(2)76/24等......

2.通过循环数组,查找斜杠"/"并获取它之前的数字并将其求和直到循环结束.例如(0)192,(1)33,(2)76等......

我想知道我的方法是否值得付出努力,因为我想学习比这更有效的方法.谢谢大家.

vb.net

0
推荐指数
1
解决办法
1362
查看次数

标签 统计

c# ×7

regex ×5

string ×3

.net ×2

html ×1

html-parsing ×1

parsing ×1

split ×1

vb.net ×1