如何在c#中分解字符串的部分并将其添加到列表中



我有以下字符串

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#中做到这一点

我会为这个使用正则表达式

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);

或者您可以使用简单的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()}";

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

最新更新