Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
存储在字符串到变量转换中的c#数字_C#_String_Numbers_Double_Converter - Fatal编程技术网

存储在字符串到变量转换中的c#数字

存储在字符串到变量转换中的c#数字,c#,string,numbers,double,converter,C#,String,Numbers,Double,Converter,我有一个有4个数字的字符串 string str ="1234 456 78 4.25847"; 我需要从中得到4个变量 INTA as 1234 int b as 456 int c as 78 双d为4.25847 关于如何提取变量有什么建议吗?字符串始终保持不变,末尾有3个整数和1个双精度。您可以将原始字符串拆分为字符串数组,然后解析每个项目: string data = "1234 456 78 4.25847"; string[] parts = data.Split(' ');

我有一个有4个数字的字符串

 string str ="1234 456 78 4.25847";
我需要从中得到4个变量

INTA as 1234 int b as 456 int c as 78 双d为4.25847


关于如何提取变量有什么建议吗?字符串始终保持不变,末尾有3个整数和1个双精度。

您可以将原始字符串拆分为字符串数组,然后解析每个项目:

string data = "1234 456 78 4.25847";

string[] parts = data.Split(' ');

int a = int.Parse(parts[0]);
int b = int.Parse(parts[1]);
int c = int.Parse(parts[2]);
double d = double.Parse(parts[3], System.Globalization.CultureInfo.InvariantCulture);

您可以这样做:

    string numbers = "1234 456 78 4.25847";

    string[] splitedNumbers =  numbers.Split(' ');

    int a = Convert.ToInt32(splitedNumbers[0]);
    int b =Convert.ToInt32(splitedNumbers[1]);
    int c = Convert.ToInt32(splitedNumbers[2]);
    double d = Convert.ToDouble(splitedNumbers[3]);
检查此代码(它将不起作用):


问题是不同的文化有不同的小数点分隔符,所以这不适用于俄罗斯地区(我认为还有其他一些地区)。但是在手动设置NumberFormatInfo后,所有操作都正常。

您在代码的哪一部分遇到问题?@AlekDepler-操作代码正常?double d=double.Parse(“4.25847”);->输入字符串的格式不正确。“double.Parse”是否依赖于语言环境?在我的系统中,数字delimeter是“,”和double.Parse(“425847”);很好。@AdrianThompsonPhillips-检查我的帖子我已经更新了我的答案,我打算用“lt-lt”作为文化(OPs自己的文化),但我怀疑这是否有效,因为我认为立陶宛使用逗号作为分隔符。
var CultureName =
                "ru-RU";
                //"en-US";
            System.Globalization.NumberFormatInfo nfi = new System.Globalization.CultureInfo(CultureName, false).NumberFormat;

            var numbers_str = "1234 456 78 4.25847";
            var numbers_array = numbers_str.Split(' ');

            var a = int.Parse(numbers_array[0], nfi);
            var b = int.Parse(numbers_array[1], nfi);
            var c = int.Parse(numbers_array[2], nfi);
            var d = double.Parse(numbers_array[3], nfi);