【发布时间】:2014-09-07 00:06:28
【问题描述】:
我有一个使用文本文件生成的列表。我正在浏览列表并使用 StringBuilder,因此我可以使用 StringBuilder 对象创建一个 csv 文件。该文件从新记录开始时有一个 ^。当 List 返回一个包含 ^ 的字符串时,我需要能够向 stringbuilder 对象追加一个新行,但是正如您在下面的代码中看到的那样,我永远无法判断何时追加新行,我不知道不知道怎么解决。
这是我尝试过的一种方法,问题显示在 cmets 中
foreach (var a in lstData)
{
if (a.Contains("^"))
{
string strName = Regex.Replace(a, "<.*?>", string.Empty).Remove(0, 1);
sbQ.Append(strName + ",");
}
else
{
sbQ.Append(a + ",");
}
if (a.Contains("^")) sbQ.AppendLine();
// Doesn't work, always appendlines when it encounters '^'
// should only append new line on next occurence
}
这是另一种方式。
string strZ;
string strX;
foreach (var a in lstData)
{
if (a.Contains("^"))
{
strZ = Regex.Replace(a, "<.*?>", string.Empty).Remove(0, 1);
sbQ.Append(strZ + ",");
strX = strZ;
}
if (strZ == strX)
{
// Causes Error : Use of Unassigned local variable 'strX'
}
}
我尝试通过遍历 List 的副本来使用 do/while 语句,但也没有用。
编辑
文本文件中的数据是这样的..
^<a class= ........>Name</a>
value1
value2
value3
value4
etc....
^<a class=......>Name</a>
value1
value2
value3
value4
etc....
^<a class=......>Name</a>
etc...
我想要完成的事情
name, value1, value2, value3, value4, etc...
name, value1, value2, value3, value4, etc...
编辑 结果为 csv。
在您看到链接的地方,它前面有一个 ^,当到达该链接时,它应该移动到第 2 行,然后当它再次点击 ^ 到第 3 行,依此类推。当它击中时,它是一个新的记录^
这应该是它的样子......
编辑/更新
Physician Name, (CPSO#)
Primary Practice Location
Disciplinary Info & Restrictions
^Aal Ali, Saleh Saif Salem A S Fares (#82358)
P O Box: 8313
Abu Dhabi 0000
United Arab Emirates
Phone: +971506117644
^Aalders, Ryan Francis (#103559)
Kingston General Hospital
Department of Family Medicine
76 Stuart Street
Kingston ON K7L 2V7
Phone: (613) 533-9300
^Aarabi, Mehdi (#81281)
UHN Toronto Western Hospital
2nd Floor East Wing
399 Bathurst Street
Toronto ON M5T 2S8
Phone: (416) 603-5641
^Aaron, Shawn David (#62311)
Ottawa General Hospital
501 Smyth Road
Ottawa ON K1H 8L6
Phone: (613) 737-8899 Ext. 74729
Fax: (613) 739-6807
【问题讨论】:
-
什么是
lstData?是包含a,b^c,d的字符串吗?你想分裂^然后,?转义字符有什么注意事项吗?你想要的只是lstData.Split('^').Select(x => x.Split(',')).ToArray()?即返回一个字符串数组的数组,其中每个数组包含一个逗号分隔字段的数组? -
@KirkWoll,对不起,是的 lstData 是我放入 List
的文本文件数据。文本文件数据不是逗号分隔的,每个值都在一个新行上。我正在获取数据并将其添加到字符串生成器并分离它。 -
所以你只想要
x.Split(^)?抱歉,我会把它作为答案发布,但我仍然不能 100% 满足您的要求。 -
@KirkWoll,我将编辑问题并更具体...
-
string.Join 有什么问题?
标签: c# if-statement foreach