文化信息输入文件c#

文化信息输入文件c#,c#,.net,wpf,csv,C#,.net,Wpf,Csv,我正在编写一个程序,根据用户导入的文件(csv输入文件)帮助进行计算 由于计算是正确的,我强迫程序以“en-US”的文化运作 我以这种方式读取输入文件 using (StreamReader sr = new StreamReader("C:\\data.csv")) { while ((currentLine = sr.ReadLine()) != null) {

我正在编写一个程序,根据用户导入的文件(csv输入文件)帮助进行计算

由于计算是正确的,我强迫程序以“en-US”的文化运作

我以这种方式读取输入文件

using (StreamReader sr = new StreamReader("C:\\data.csv"))
            {   
                while ((currentLine = sr.ReadLine()) != null)
                {
                    var values = currentLine.Split(';');

                        string a = values[0];
                        string b = values[1];
                        string c = values[2];
                        string d = values[3];
                        string e = values[4];
                        string f = values[5];
                        string g = values[6];
                        string h = values[7];
                        string i = values[8];
                        string j = values[9];
                        string k = values[10];
                  }
                }

我担心的是,我不知道输入文件的语言记录,可能是文化“fr-fr”,我必须确保数据分隔符,十进制对应语言“en-US”。您能给我解释一下如何确定输入文件的语言,或者如何转换它以使其与语言“en-US”兼容吗首先,CSV格式与文化无关。常见的分隔符(
)、分隔符(
)与区域性无关,即使某些工具(如Excel)使用的是
用于en-US版本(无论如何都可以更改)和
用于fr-fr

使用这些文件的最佳方法是建立合同(“库处理以下格式的CSV文件:”),或者进行一些配置以正确处理文件

否则,您将不得不尝试一种启发式方法,通过解析标题和内容(如果您有固定数量的列,您可以猜测分隔符),但它有限制

这与试图找出文件中使用的编码方式时可能遇到的问题相同(例如,CSV文件可能使用
UTF-8
ANSI
进行编码)


(顺便说一句,Excel是一个处理CSV文件的糟糕工具,它会截断数据和做其他奇怪的事情。Access处理CSV文件要好得多,但人们倾向于使用Excel)。

我找到了一个解决方案。我的输入文件是一个10列文件,第一行是标题行。用户必须在第一行写入:

LABEL1 LABEL2等…直到10

因此,我使用函数“between”来查找分隔符

test是使用StreamReader读取的文件的第一行。我将第一行存储到字符串中

Console.WriteLine(test.Between("LABEL1", "LABEL2"));
现在,我知道这是否是一个“;“delimiter我将用“.”替换每个“,”,如果分隔符是“,”,我不必替换任何小数分隔符,因为它已经是任何分隔符的“.”等


关于

考虑文件的来源。创建文件时,你能做些什么吗,比如在文件名中包含区域性或作为第一行?我不能,用户使用Excel创建文件。这对他来说是完全透明的。是的,输入文件有10列和X行。如果我使用包含inp内容的文本块创建窗口ut文件。和一个文本框输入列分隔符,之后我可以定义十进制分隔符(如果用户输入“;”作为列分隔符every,是一个十进制分隔符,我必须将every替换为“.”并删除“?这种转换必须小心,例如,不要用逗号替换文本中的点。对于数字,可以指定用于分析字符串的区域性。如果数字大于或等于1000,则效果更好,因为Excel可以在csv文件中添加数千个分隔符。()
Console.WriteLine(test.Between("LABEL1", "LABEL2"));