Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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#_Regex - Fatal编程技术网

C# 将字符串转换为浮点时出错

C# 将字符串转换为浮点时出错,c#,regex,C#,Regex,我有一个关于转换的新手问题 string Descript1 = ":1:2:3:4:5"; Regex pattern = new Regex("(:)"); foreach (string sub in pattern.Split(Descript1)) { if (sub != ":") { float a = Convert.ToSingle(sub); } } if (sub != ":" && sub!="") 但是这段代

我有一个关于转换的新手问题

string Descript1 = ":1:2:3:4:5";
Regex pattern = new Regex("(:)");

foreach (string sub in pattern.Split(Descript1))
{
    if (sub != ":")
    {
        float a = Convert.ToSingle(sub);
    }
}
if (sub != ":" && sub!="")
但是这段代码不断地抛出错误:字符串的格式不正确

有人能帮我吗


谢谢。

您不应该需要正则表达式模式。该方法有一个重载,它将分隔符作为字符串接受


执行console.writeline或breakpoint操作,并确保您得到的字符串对转换有意义。

我认为您的数组将以空字符串开头,因为字符串开头的:。第一步是使用调试器确定数组是否包含您认为它包含的内容。

拆分的第一个结果是空字符串,即字符串中第一个冒号之前的内容

string Descript1 = ":1:2:3:4:5";
Regex pattern = new Regex("(:)");

foreach (string sub in pattern.Split(Descript1))
{
    if (sub != ":")
    {
        float a = Convert.ToSingle(sub);
    }
}
if (sub != ":" && sub!="")
跳过空字符串,而不是跳过:因为这永远不会出现在结果中:

string Descript1 = ":1:2:3:4:5";
Regex pattern = new Regex(":");

foreach (string sub in pattern.Split(Descript1)) {
  if (sub.Length > 0) {
    Single a = Convert.ToSingle(sub);
  }
}
试试这个:

string description = ":1:2:3:4:5";
var floats = from part in description.Split(new char[] { ':' }, StringSplitOptions.RemoveEmptyEntries)
             select float.Parse(part);
foreach (var f in floats)
{
    Console.WriteLine(f);
}

在Pattern.Split返回的数组的开头,Regex.Split返回一个空字符串

将其更改为以下内容,它应该可以工作:

string Descript1 = ":1:2:3:4:5";
Regex pattern = new Regex("(:)");

foreach (string sub in pattern.Split(Descript1))
{
    if (sub != ":" && sub != string.Empty)
    {

        float a = float.Parse(sub);
    }
}

这是在任何特定的编程语言中吗?是字符串描述符1=:1:2:3:4:5中的额外值;打字错误?