【发布时间】:2013-04-20 05:37:39
【问题描述】:
我对使用正则表达式还很陌生,并且根据我阅读过的一些教程,我无法在 Regex.Replace 中正确格式化这一步。
这是我正在处理的场景...当我从列表框中提取数据时,我想将其格式化为CSV 类似的格式,然后保存文件。使用替换选项是这种情况的理想解决方案吗?
在正则表达式格式化示例之前。
FirstName LastName Salary Position
-------------------------------------
John Smith $100,000.00 M
正则表达式替换后的建议格式
John Smith,100000,M
当前格式化状态输出:
John,Smith,100000,M
*注意 - 有没有办法可以用空格替换第一个逗号?
我的代码片段
using(var fs = new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Write))
{
using(var sw = new StreamWriter(fs))
{
foreach (string stw in listBox1.Items)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine(stw);
//Piecing the list back to the original format
sb_trim = Regex.Replace(stw, @"[$,]", "");
sb_trim = Regex.Replace(sb_trim, @"[.][0-9]+", "");
sb_trim = Regex.Replace(sb_trim, @"\s", ",");
sw.WriteLine(sb_trim);
}
}
}
【问题讨论】:
-
用你的正则表达式
44.66将被替换为44 -
刚刚重新编辑了我的声明...我将 100,000.00 转换为 100000。是的,当我写回 csv 格式时,我在这个等式中留下了美分。
-
请尽量不要使用太多粗体 - 我已经删除了所有并修复了您不完整的 Dispose 调用,因此代码看起来没问题。
-
@Curtis 你应该使用
[.]0+(?=\s)然后 -
@Anirudh \.\d+ 会不会更好?也许它并不总是 0.00。