我有一个关于转换的菜鸟问题。
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 :(得分: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);
}
}
答案 1 :(得分:2)
您不应该需要正则表达式模式。 Split
方法有一个重载,它接受你的分隔符作为字符串。
执行console.writeline(或断点),并确保获得一个对转换有意义的字符串。
答案 2 :(得分:2)
我想你的数组将以空字符串开头(因为:在字符串的开头)。第一步是使用调试器来确定数组是否包含您认为它包含的内容。
答案 3 :(得分:0)
if (sub != ":" && sub!="")
答案 4 :(得分: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);
}
答案 5 :(得分: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);
}
}