How can I only store the second part of a string in a list?
我有一个仅包含字符串的列表Textlist1。列表中的每个项目都以相同的文本开头:" sentence.text。",但是我只想将字符串的第二部分存储在另一个列表中,我不想存储第一部分" sentence .text。"在列表Textlist2中。
例如:
完整的字符串存储在Textlist1中。
1 2 | Textlist1[0] ="sentence.text.My name is Fred" Textlist1[1] ="sentence.text.Jenny is my sister" |
如何仅将"我的名字是Fred "和" Jenny是我的妹妹"添加到Textlist2?
结果应如下所示:
1 2 | Textlist2[0] ="My name is Fred" Textlist2[1] ="Jenny is my sister" |
查看在线结果:https://dotnetfiddle.net/MpswLZ
1 2 3 4 5 6 7 8 |
按句号分割输入字符串,将分割限制为3。然后从分割产生的数组中获取最后一个条目。
1 2 | Textlist2[0] = Textlist1[0].Split('.', 3)[2]; Textlist2[1] = Textlist1[1].Split('.', 3)[2]; |
您可以使用
1 2 | var regex = new Regex("^sentence.text.",RegexOptions.Compiled); Textlist2.AddRange(Textlist1.Select(x=>regex.Replace(x,string.Empty))); |
正则表达式中的
样本输入
样本输出
您可以使用Linq。 (您需要添加
1 2 3 | Textlist2= Textlist1 .Select(i=> i.Substring("sentence.text.".Length)) .ToList(); |
1 2 3 4 5 6 7 | List<string> Textlist1 = new List<string> { "sentence.text.a", "sentence.text.b" }; string prefix ="sentence.text."; List<string> Textlist2 = Textlist1.Select(x => x.Substring(prefix.Length)).ToList(); |
https://dotnetfiddle.net/oFhvfs
最终有很多方法可以做到这一点,这只是一种解决方案。您选择哪种方法取决于图案替换的复杂程度。我采用了一种简单化的方法,因为您的示例是一个非常简单的案例。