【问题标题】:How can I break down parts of a string and add it to a list in c#如何分解字符串的一部分并将其添加到 C# 中的列表中
【发布时间】:2020-07-28 04:41:18
【问题描述】:

我有以下字符串

var tString = "user@Name:Alex; //*[local-name() = 'Alex']" ;

我有一个名为UserModel 的类型列表,它有两个属性ElementIDExpression

List<UserModel> myUserList = new List <UserModel>();

我正在尝试编写一些代码,我可以打破上面的字符串,以便在 myUserList 到 ElementID 中,可以将字符串的 user@Name:Alex 部分中的 Alex 之类的值添加到 Expression 我可以添加字符串的//*[local-name() = 'Alex']部分。

非常感谢您对此提出一些建议。如何在 C# 中做到这一点

【问题讨论】:

  • 错字,或者你为什么两次提到ElementID?
  • 错字,我更正了:)
  • 为什么是用户模型列表?当您使用; 拆分字符串时...第二项将是您的表达式。将第一项与: 分开,您将在第二项中获得一个名称。

标签: c# .net string list split


【解决方案1】:

我会为此使用正则表达式

var tString = "user@Name:Alex; //*[local-name() = 'Alex']" ;
var regEx = new Regex("user@Name:(?<elementID>.+); (?<expression>.+)");
var match = regEx.Match(tString);

var elementID = match.Groups["elementID"].Value;
var expression = match.Groups["expression"].Value;

Console.WriteLine(elementID);
Console.WriteLine(expression);

查看实际操作: https://dotnetfiddle.net/rZH6RB

以防你不知道如何用上面的代码填充你的列表,这里有一个例子,它使用正则表达式的结果来创建一个新的 UserModel 实例并用这个新的填充一个列表实例。

var tString = "user@Name:Alex; //*[local-name() = 'Alex']" ;
var regEx = new Regex("user@Name:(?<elementID>.+); (?<expression>.+)");
var match = regEx.Match(tString);

var newUserModel = new UserModel() { 
                       ElementID = match.Groups["elementID"].Value, 
                       Expression = match.Groups["expression"].Value 
                   };

var myUserList = new List<UserModel>();
myUserList.Add(newUserModel);

【讨论】:

    【解决方案2】:

    或者你可以使用简单的String.Split

    public class UserModel 
    {
      public string ElementID { get; set; }
      public string Expression { get; set; }
    }
    
        var tString = "user@Name:Alex; //*[local-name() = 'Alex']";
        var stringParts = tString.Split("//*", StringSplitOptions.RemoveEmptyEntries);
        var um = new UserModel();
        um.ElementID = stringParts.FirstOrDefault()?.Replace("user@Name:", string.Empty).Trim().TrimEnd(';');
        um.Expression = $"//*{stringParts.LastOrDefault()?.Trim()}";
    

    当然,您必须对输入的完整性有一定的把握。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 2020-03-20
      相关资源
      最近更新 更多