2009-11-10 63 views
-1

我有一个关于转换的菜鸟问题。将字符串转换为浮点时出错

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); 
    } 
} 

但是这段代码不断输出错误:“字符串的格式不正确”。

任何人都可以帮助我吗?

谢谢。

+0

这是在任何特定的编程语言? – Grumdrig 2009-11-10 19:27:45

+0

是额外的“in string Descript1 =”:1:2:3:4:5“”;一个错字? – 2009-11-10 19:28:03

回答

2

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

做一个console.writeline(或断点),并确保你得到一个字符串,适合转换。

0
if (sub != ":" && sub!="") 
2

我想你的数组会以一个空字符串开头(因为:在你的字符串的开头)。第一步是使用调试器来确定数组是否包含您认为它包含的内容。

7

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

跳过空字符串,而不是跳过 “:”(因为这永远不能在结果出现):

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); 
    } 
} 
0

试试这个:

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); 
} 
0

Regex.Split在返回一个空字符串您的数组(从Pattern.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); 
    } 
}