如何用C#解析代码。括号中的代码是标准名称

如何用C#解析代码。括号中的代码是标准名称,c#,C#,我有如下代码: (00)1234567891234(10)1234(3100)12315 括号中的代码是标准名称,并且始终相同。但顺序可能不同。(10) 可以在(00)之前,而不是(3100)可以是(01) PAR数据的最佳解决方案是什么,如: (00)1234567891234 (10)1234 (3100)12315 然后如果我写 00我会得到1234567891234 我要1234 3100我会得到12315 做这件事最好的方法是什么?怎样做?如何在()xx()之间获得值?非常简单的方

我有如下代码:

(00)1234567891234(10)1234(3100)12315
括号中的代码是标准名称,并且始终相同。但顺序可能不同。(10) 可以在(00)之前,而不是(3100)可以是(01)

PAR数据的最佳解决方案是什么,如:

(00)1234567891234
(10)1234
(3100)12315
然后如果我写

00我会得到1234567891234

我要1234

3100我会得到12315

做这件事最好的方法是什么?怎样做?如何在()xx()之间获得值?

非常简单的方法:

string input = "(00)1234567891234(10)1234(3100)12315";
string[] lines = input.Split(new [] {"("}, StringSplitOptions.RemoveEmptyEntries);
foreach(string ln in lines)
{
    string key = ln.Substring(0, ln.IndexOf(')'));
    string value = ln.Substring(ln.IndexOf(')') + 1);
}
非常简单的方法:

string input = "(00)1234567891234(10)1234(3100)12315";
string[] lines = input.Split(new [] {"("}, StringSplitOptions.RemoveEmptyEntries);
foreach(string ln in lines)
{
    string key = ln.Substring(0, ln.IndexOf(')'));
    string value = ln.Substring(ln.IndexOf(')') + 1);
}

我不会为您编写代码,但会给您一个提示

(00)1234567891234(10)1234(3100)12315

基于
和this
)解析上述字符串
您可以使用
字符串.Split
方法进行此操作

这将为您提供数组中的以下内容

00
1234567891234
10
1234
3100
12315

现在,您可以将这些值配对,并将它们放入
字典

我不会为您编写代码,但会给您一个提示

(00)1234567891234(10)1234(3100)12315

基于
和this
)解析上述字符串
您可以使用
字符串.Split
方法进行此操作

这将为您提供数组中的以下内容

00
1234567891234
10
1234
3100
12315
现在,您可以将这些值配对,并将它们放入
字典中

    const string text = "(00)1234567891234(10)1234(3100)12315";

    var result =  Regex.Matches(text, @"\((\d+)\)(\d+)").Cast<Match>()
        .Select(x => new {Value = x.Groups[2].Value, Key = x.Groups[1].Value})
        .ToDictionary(y => y.Key, x => x.Value);

    foreach (var r in result)
    {
        Console.WriteLine("Key: {0}, Value: {1}", r.Key, r.Value);
    }


    /* OUTPUT
     * 
     *  Key: 00, Value: 1234567891234
        Key: 10, Value: 1234
        Key: 3100, Value: 12315
     */

    Console.Read();
const string text=“(00)1234567891234(10)1234(3100)12315”;
var result=Regex.Matches(文本,@“\(\d+)\(\d+)).Cast()
.Select(x=>new{Value=x.Groups[2]。Value,Key=x.Groups[1]。Value})
.ToDictionary(y=>y.Key,x=>x.Value);
foreach(结果中的var)
{
WriteLine(“键:{0},值:{1}”,r.Key,r.Value);
}
/*输出
* 
*键:00,值:1234567891234
键:10,值:1234
键:3100,值:12315
*/
Console.Read();
在一行中使用Linq(这里似乎更可取),您将得到一个
字典
,其中一个对象具有两个属性

    const string text = "(00)1234567891234(10)1234(3100)12315";

    var result =  Regex.Matches(text, @"\((\d+)\)(\d+)").Cast<Match>()
        .Select(x => new {Value = x.Groups[2].Value, Key = x.Groups[1].Value})
        .ToDictionary(y => y.Key, x => x.Value);

    foreach (var r in result)
    {
        Console.WriteLine("Key: {0}, Value: {1}", r.Key, r.Value);
    }


    /* OUTPUT
     * 
     *  Key: 00, Value: 1234567891234
        Key: 10, Value: 1234
        Key: 3100, Value: 12315
     */

    Console.Read();
const string text=“(00)1234567891234(10)1234(3100)12315”;
var result=Regex.Matches(文本,@“\(\d+)\(\d+)).Cast()
.Select(x=>new{Value=x.Groups[2]。Value,Key=x.Groups[1]。Value})
.ToDictionary(y=>y.Key,x=>x.Value);
foreach(结果中的var)
{
WriteLine(“键:{0},值:{1}”,r.Key,r.Value);
}
/*输出
* 
*键:00,值:1234567891234
键:10,值:1234
键:3100,值:12315
*/
Console.Read();

在一行中使用Linq(这里似乎更可取),您将得到一个
字典
,其中的对象具有两个属性

,您尝试了什么?也不清楚数据在键值对之间是否有换行符。我尝试使用indexOf,这是个坏主意。代码没有换行符。你看过
String.Split
吗?我看过Split是的,但是我对regex
String不好。Split
不使用regex。你试过什么?也不清楚数据在键值对之间是否有换行符。我尝试使用indexOf,这是个坏主意。代码没有换行符。你看过
String.Split吗?
?我看过Split是的,但是我对regex
String不好。Split
不使用regex。非常好!我喜欢这种方法!很不错的!我喜欢这种方法!