代码之家  ›  专栏  ›  技术社区  ›  Colin Pickard

.net拆分奇偶管道数据的方法

  •  2
  • Colin Pickard  · 技术社区  · 14 年前

    1|cat|2|dog|3|manatee|4||5|gerbil|6|etc
    

    (注意偶尔缺少值)

    我想知道是否有一种很好的.NET类型的方法可以将其转换为带有id和name参数的类宠物。

    我有一些代码可以 String.Split

    谢谢

    3 回复  |  直到 14 年前
        1
  •  3
  •   jball    14 年前

    你可以使用 TextFieldParser 类来处理字符串到字段的解析(我知道这是一个VB类,但您可以从C#访问它)。然后将交替场设置为新对象。

    using (Microsoft.VisualBasic.FileIO.TextFieldParser MyReader = 
           new Microsoft.VisualBasic.FileIO.TextFieldParser("C:\\testfile.txt")) 
       { 
            MyReader.TextFieldType = FileIO.FieldType.Delimited; 
            MyReader.SetDelimiters(","); 
            string[] currentRow = null; 
            while (!MyReader.EndOfData) 
            { 
                try 
                { 
                    currentRow = MyReader.ReadFields(); 
                    string currentField = null; 
                    foreach (var currentField in currentRow) 
                    { 
                        //set values for your object here
                    } 
                } 
                catch (Microsoft.VisualBasic.FileIO.MalformedLineException ex) 
                { 
                  //handle the exception
                } 
            } 
        } 
    
        2
  •  1
  •   Colin Pickard    14 年前

    public List<Pet> CreatePets(String PetData)
    {
         List<Pet> PetList = new List<Pet>();
         string[] PetArray = PetData.Split(new char[]{'|'}, StringSplitOptions.None);
         for (int i = 0; i < PetArray.Count(); i += 2)
         {
             Pet NewPet= new Pet(Convert.ToInt32(PetArray[i]), PetArray[i+1]);
             PetList.Add(Field);
         }                
         return PetList;
    }
    
        3
  •  0
  •   Koeuy Chetra    10 年前

    Public Function GridViewColumnsWidths(ByVal Gridview As GridView, ByVal ColumnNameCommaWidth As String) As Boolean
                    Dim i As Boolean
                    Dim ArrayOfItem As String() = Split(ColumnNameCommaWidth, "|",, CompareMethod.Text) 'eg: "ColA|200|ColB|100|ColC|300"
                    For IndexOfItem As Integer = 0 To ArrayOfItem.Count - 1
                        Dim Column As String = ArrayOfItem(IndexOfItem)
                        Dim Width As Integer = Convert.ToInt16(ArrayOfItem(IndexOfItem + 1))
                        With Gridview.Columns
                            .Item(Column).Width = Width
                        End With
                        IndexOfItem += 1
                    Next
                    Return i
                End Function