【发布时间】:2020-07-16 06:58:14
【问题描述】:
我有一个如下所示的字符串
string names = "<?startname; Max?><?startname; Alex?><?startname; Rudy?>";
有什么方法可以拆分这个字符串并将 Max 、 Alex 和 Rudy 添加到单独的列表中?
【问题讨论】:
-
你能在
<?startname;上string.Split吗?
我有一个如下所示的字符串
string names = "<?startname; Max?><?startname; Alex?><?startname; Rudy?>";
有什么方法可以拆分这个字符串并将 Max 、 Alex 和 Rudy 添加到单独的列表中?
【问题讨论】:
<?startname; 上string.Split吗?
当然,拆分为两个字符串(所有始终在之前,所有始终在之后)并指定您希望拆分删除空:
var r = names.Split(new[]{ "<?startname; ", "?>" }, StringSplitOptions.RemoveEmptyEntries);
如果您取出 RemoveEmptyEntries,它会让您更清楚地了解拆分是如何工作的,但实际上如果没有它,您的名字就会散布在空字符串的数组条目中,因为 split 找到了一个分隔符( <?...) 紧跟在另一个 (?>) 之后,分隔符之间有一个空字符串
您可以阅读有关这种拆分形式 here 的大量信息 - 这是 netcore3.1 的直接链接,您可以在目录中更改您的版本 - 这种拆分的变体从 framework2.0 开始可用
您确实也说过“添加到单独的列表” - 没有看到任何代码,所以我想您会很高兴继续 r 这里是“单独的列表”(实际上是一个数组,但是可能足够等效且易于使用 LINQ 的 ToList() 进行转换(如果没有),或者如果您有另一个名称列表(确实是 List<string>),那么您可以 thatList.AddRange(r) 它
【讨论】:
另一个想法是使用正则表达式
以下正则表达式应该可以工作:
(?<=; )(.*?)(?=\s*\?>)
【讨论】: