C#如何将CSV文件实现到该代码中
您好,我对编码相当陌生,我有一段代码可以搜索一个字符串并用另一个字符串替换它,如下所示:C#如何将CSV文件实现到该代码中,c#,arrays,csv,replace,find,C#,Arrays,Csv,Replace,Find,您好,我对编码相当陌生,我有一段代码可以搜索一个字符串并用另一个字符串替换它,如下所示: var replacements = new[]{ new{Find="123",Replace="Word one"}, new{Find="ABC",Replace="Word two"}, new{Find="999",Replace="Word two"}, }; var myLongString = "123 is a long 999 string yeah"; forea
var replacements = new[]{
new{Find="123",Replace="Word one"},
new{Find="ABC",Replace="Word two"},
new{Find="999",Replace="Word two"},
};
var myLongString = "123 is a long 999 string yeah";
foreach(var set in replacements)
{
myLongString = myLongString.Replace(set.Find, set.Replace);
}
如果我想使用一个CSV文件,其中包含大量的单词及其替换,例如,LOL,大笑,ROFL,在地板上翻滚大笑。我将如何实现它?创建一个文本文件,它看起来像(可以使用逗号,但我喜欢管道(
):
然后创建一个小助手类:
public class WordReplace
{
public string Find { get; set; }
public string Replace { get; set; }
}
最后,调用以下代码:
private static string DoWordReplace()
{
//first read in the data
var fileData = File.ReadAllLines("WordReplace.txt");
var wordReplacePairs = new List<WordReplace>();
var lineNo = 1;
foreach (var item in fileData)
{
var pair = item.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries);
if (pair.Length != 2)
{
throw new ApplicationException($"Malformed file, line {lineNo}, data = [{item}] ");
}
wordReplacePairs.Add(new WordReplace{Find = pair[0], Replace = pair[1]});
++lineNo;
}
var longString = "LOL, 123 is a long 999 string yeah, ROFL";
//now do the replacements
var buffer = new StringBuilder(longString);
foreach (var pair in wordReplacePairs)
{
buffer.Replace(pair.Find, pair.Replace);
}
return buffer.ToString();
}
为什么是CSV格式?如果你读它们,有旧的,有新的,那将是一个小问题,我相信你可以用这样的值对为自己解决一些问题。我会使用字典,基本上是一个键值对,这就是你所拥有的。你会得到所有这些随机的建议,因为你问的问题太多了;您是新手,您想要搜索字符串,您想要替换字符串,您想要读取CSV文件。一次只做一步。如果您对某个步骤有问题,请具体询问该步骤。如果您打算使用“很多单词”,则使用
StringBuilder.Replace
比使用string.Replace
会获得更好的性能等。如果你能保证你的字段中没有嵌入逗号,那么你只需读入这些行,然后使用string.Split
进行拆分。使用“制表符分隔”文件可能比使用逗号分隔的文件(嵌入制表符的可能性很低)(或管道分隔(|
)或其他永远不会使用的文件)更开心。非常感谢:)我将尝试一下,并将其改编为我的代码。@gzod。哎呀,我忘了一点代码(WordReplacehelper类)。看看我的更新。如果这对你有用,别忘了接受它。你的代码真的帮我找到了正确的方向。有了一些线索,我就能够得到我所需要的。是像你这样乐于助人的人创建了这个网站:)我花时间去理解它并将其分解。再次感谢。
private static string DoWordReplace()
{
//first read in the data
var fileData = File.ReadAllLines("WordReplace.txt");
var wordReplacePairs = new List<WordReplace>();
var lineNo = 1;
foreach (var item in fileData)
{
var pair = item.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries);
if (pair.Length != 2)
{
throw new ApplicationException($"Malformed file, line {lineNo}, data = [{item}] ");
}
wordReplacePairs.Add(new WordReplace{Find = pair[0], Replace = pair[1]});
++lineNo;
}
var longString = "LOL, 123 is a long 999 string yeah, ROFL";
//now do the replacements
var buffer = new StringBuilder(longString);
foreach (var pair in wordReplacePairs)
{
buffer.Replace(pair.Find, pair.Replace);
}
return buffer.ToString();
}
Laugh Out Loud, Word One is a long Word Three string yeah, Roll Around Floor Laughing