在List的循环中我做了:
private void listtostringlist(List<NewsLine> lnl, List<string> myl)
{
for (int i = 0; i < AllNews.Count; i++)
{
myl.Add(AllNews[i].text);
IFormatProvider provider = CultureInfo.InvariantCulture;
DateTime myTime = DateTime.ParseExact(AllNews[i].original_time, "DyyMMddTHHmm", provider);
string results = myTime.ToString("hh:mm דווח במקור בתאריך : dd.MM.yy : שעה");
AllNews[i].original_time = results;
myl.Add(results);
myl.Add(AllNews[i].link);
myl[i] = Regex.Replace(myl[i], @"\t|\n|\r", "");
}
试图使用正则表达式:
myl[i] = Regex.Replace(myl[i], @"\t|\n|\r", "");
但是在列表中使用断点时,我看到的某些行仍然没有影响\ n \ t在开头或结尾。 我想删除它们,如果有的话。
答案 0 :(得分:2)
我怀疑AllNews
的计数小于myl
中的行数,或者myl
在将其传递给此函数时已经有一些行。
如果是这种情况,则计数不会匹配,并且您不会为集合中的每个元素进行迭代,因此,并非所有元素都将应用替换。
我将其重写为:
private void listtostringlist(List<NewsLine> lnl, List<string> myl)
{
for (int i = 0; i < AllNews.Count; i++)
{
myl.Add(AllNews[i].text);
// etc...
}
for(int i = 0; i < myl.Count; i++)
{
myl[i] = Regex.Replace(myl[i], @"\t|\n|\r", "");
}
}
此外,正如评论中所指出的,您还在myl
循环中多次添加for
:
myl.Add(AllNews[i].text);
myl.Add(results);
myl.Add(AllNews[i].link);
这意味着AllNews
和myl
的计数将不同步,因此在给定上下文的情况下,索引器i
对myl
无用。