2017-04-05 58 views
-1

我在Visual Studio中遇到错误: 'char'不包含split的定义,并且没有找到接受类型'char'的第一个参数的扩展方法'Split'(您是否缺少using指令或?装配参考)如何用最少的代码修改来修复 - 字符串转换?

这是我的代码:

private void BuildData(string data) 
    { 
     var endOfText = "b4"; 

     if (data.EndsWith(endOfText)) 
     { 
      this.lastMessage.Append(data); 

      Parse(this.lastMessage.ToString()); 

      this.lastMessage.Clear(); 
     } 
     else 
     { 
      this.lastMessage.Append(data); 
     } 
    } 

    public static void ParseLength(string text) 
    { 
     const int skillId = 1; 
     const int queueId = 2; 

     var skills = text[skillId].Split('\t'); // Split error 
     var queueLengths = text[queueId].Split('\t'); // Split error 

     var res = new SkillColl(); 

     for (var i = 0; i < skills.Length; i++) 
     { 
      try 
      { 
       var skill = Int32.Parse(skills[i]); 
       var queueLength = Int32.Parse(queueLengths[i]); 

       result.Add(skill, queueLength); 
      } 
      catch (Exception ex) 
      { 
       log.Error(ex); 
      } 
     } 
     queueLengths = res; 
    } 

如何以最优化的方式解析这两值,而无需再次写入整个代码:

var skills 
var queueLengths 
+2

您试图拆分字符而不是字符串。文本[skillId]是位于文本字符串中的熟练位置的字符。 – nevsv

回答

1

string[indexer]返回位于该特定索引中的特定字符。
也许你的意思是使用text.Split('\t')[skillId],那会给你由Split方法返回的字符串数组中的第二个元素。 但是,我会建议使用更好的存储数据然后格式化的字符串。

0

ATC是正确的,因为在索引之前您还没有拆分字符串。

var skills = text[skillId].Split('\t'); 

您尝试拉一个字符串,它是太早了指数,你还没有把它分解:

var skills = text.Split('\t')[skillId]; 

这会给你拆分后的索引的阵列。

var skills = text.Split('\t')[skillId]; // Split error 
var queueLengths = text.Split('\t')[queueId]; // Split error 
+0

好吧,我改变了顺序。现在我进入了var skill = Int32.Parse(skills [i])的尝试部分;无法将char转换为字符串 –

+0

var skill = Int32.Parse(skills [i] .ToString()); –

+0

虽然没有理由解析,但字符可以安全地转换为整数,如下所示:'int x =(int)ch;' –