Προς το περιεχόμενο

Πως να διαβασω ενα element μεσε απο ενα element


Evgenios1

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια και χαρα.

(.net c#)

Εστω ο,τι εχω ενα αρχειο με ενα format του τυπου

>$elementName@Value?

(text οχι binary)

Εγω θελω να βαλω μεσα στο @ αλλο ενα element πχ

>$persons@$goodperson@mplampla?$badperson@mplampla??

πως θα το διαβασω;

 

Για να διαβασω πχ αυτο

>$personId@2?$name@takis?$lname@paliotakis?

εχω κανει αυτο

>[color="#0000ff"][b]using[/b][/color] System;
[color="#0000ff"][b]using[/b][/color] System.Collections.Generic;
[color="#0000ff"][b]using[/b][/color] System.Linq;
[color="#0000ff"][b]using[/b][/color] System.Text;
[color="#0000ff"][b]using[/b][/color] System.Text.RegularExpressions;
[color="#0000ff"][b]namespace[/b][/color] ConsoleApplication1
{

   [color="#0000ff"][b]public[/b][/color] [color="#0000ff"][b]class[/b][/color] Person
   {
       [TextSerializer(Tag = [color="#a31515"]"name"[/color])]
       [color="#0000ff"][b]public[/b][/color] [color="#8000ff"]string[/color] FirsName;
       [TextSerializer(Tag = [color="#a31515"]"lname"[/color])]
       [color="#0000ff"][b]public[/b][/color] [color="#8000ff"]string[/color] LastName;
   }
  
   [color="#0000ff"][b]class[/b][/color] Program
   {

       
       [color="#0000ff"][b]static[/b][/color] [color="#0000ff"][b]void[/b][/color] Main([color="#8000ff"]string[/color][] args)
       {
           

           TextSerializer personSer1 = [color="#0000ff"][b]new[/b][/color] TextSerializer([color="#0000ff"][b]typeof[/b][/color](Person));


           Person person = personSer1.Deserializer(mainsource) [color="#0000ff"][b]as[/b][/color] Person;
          

           [color="#2b91af"]Console[/color].WriteLine([color="#a31515"]"FName:{0}\nLName:{1}"[/color],person.FirsName,person.LastName);
                 [color="#2b91af"]Console[/color].Read();
       }
   }
  
}

 

 

>[color="#0000ff"][b]using[/b][/color] System;
[color="#0000ff"][b]using[/b][/color] System.Collections.Generic;
[color="#0000ff"][b]using[/b][/color] System.Linq;
[color="#0000ff"][b]using[/b][/color] System.Text;

[color="#0000ff"][b]namespace[/b][/color] ConsoleApplication1
{
   
   [color="#0000ff"][b]class[/b][/color] TextSerializer : TextSomeFormat
   {
       [color="#0000ff"][b]private[/b][/color] [color="#2b91af"]Type[/color] type;
       [color="#0000ff"][b]public[/b][/color] TextSerializer([color="#2b91af"]Type[/color] type)
       {
           [color="#0000ff"][b]this[/b][/color].type = type;
       }

       [color="#0000ff"][b]public[/b][/color] [color="#8000ff"]object[/color] Deserializer([color="#8000ff"]string[/color] source)
       {
           [color="#8000ff"]object[/color] obj = [color="#2b91af"]Activator[/color].CreateInstance(type);
           [color="#0000ff"][b]foreach[/b][/color] ([color="#0000ff"][b]var[/b][/color] fields [color="#0000ff"][b]in[/b][/color] type.GetFields())
           {
               [color="#0000ff"][b]var[/b][/color] att = fields.GetCustomAttributes([color="#0000ff"][b]true[/b][/color]).[color="#2b91af"]Single[/color]() [color="#0000ff"][b]as[/b][/color] TextSerializerAttribute;
               type.GetField(fields.Name).SetValue(obj, GetValue(GetTags(source), att.Tag));
           }

           [color="#0000ff"][b]return[/b][/color] obj;
       }
       [color="#0000ff"][b]public[/b][/color] [color="#8000ff"]string[/color] Serializer([color="#8000ff"]object[/color] obj)
       {
           [color="#8000ff"]string[/color] source = [color="#a31515"]""[/color];
           [color="#0000ff"][b]foreach[/b][/color] ([color="#0000ff"][b]var[/b][/color] field [color="#0000ff"][b]in[/b][/color] type.GetFields())
           {
               [color="#0000ff"][b]var[/b][/color] att = field.GetCustomAttributes([color="#0000ff"][b]true[/b][/color]).[color="#2b91af"]Single[/color]() [color="#0000ff"][b]as[/b][/color] TextSerializerAttribute;
               source = SetTag(att.Tag, type.GetField(field.Name).GetValue(obj).ToString(), source);
           }

           [color="#0000ff"][b]return[/b][/color] source;
       }
   }
}

 

 

TextSomeFormat

 

>[color="#0000ff"][b]using[/b][/color] System;
[color="#0000ff"][b]using[/b][/color] System.Collections.Generic;
[color="#0000ff"][b]using[/b][/color] System.Linq;

[color="#0000ff"][b]namespace[/b][/color] ConsoleApplication1
{
   [color="#0000ff"][b]class[/b][/color] TextSomeFormat
   {
       [color="#0000ff"][b]protected[/b][/color] [color="#8000ff"]string[/color] SetTag([color="#8000ff"]string[/color] tagname, [color="#8000ff"]string[/color] tagvalue, [color="#8000ff"]string[/color] source)
       {
           source += [color="#8000ff"]string[/color].[color="#2b91af"]Format[/color]([color="#a31515"]"${0}@{1}?"[/color], tagname, tagvalue);
           [color="#0000ff"][b]return[/b][/color] source;
       }


       [color="#0000ff"][b]protected[/b][/color] [color="#8000ff"]object[/color] GetValue([color="#2b91af"]IEnumerable[/color]<[color="#8000ff"]string[/color]> tags, [color="#8000ff"]string[/color] name)
       {
           [color="#0000ff"][b]foreach[/b][/color] ([color="#0000ff"][b]var[/b][/color] item [color="#0000ff"][b]in[/b][/color] tags)
               [color="#0000ff"][b]if[/b][/color] ([color="#0000ff"][b]new[/b][/color] [color="#8000ff"]string[/color](GetTagName(item).ToArray()) == name)
                   [color="#0000ff"][b]return[/b][/color] [color="#0000ff"][b]new[/b][/color] [color="#8000ff"]string[/color](GetValue(item).ToArray());
           [color="#0000ff"][b]return[/b][/color] [color="#0000ff"][b]null[/b][/color];
       }
       [color="#0000ff"][b]protected[/b][/color] [color="#2b91af"]IEnumerable[/color]<[color="#8000ff"]string[/color]> GetTags([color="#8000ff"]string[/color] source)
       {
           [color="#8000ff"]int[/color] idxs = source.IndexOf('$');
           [color="#8000ff"]int[/color] idxe = source.IndexOf('?');
           [color="#8000ff"]bool[/color] flag = [color="#0000ff"][b]true[/b][/color];
           [color="#0000ff"][b]while[/b][/color] (flag)
           {
               [color="#0000ff"][b]yield[/b][/color] [color="#0000ff"][b]return[/b][/color] source.Substring(idxs, idxe - idxs);
               [color="#0000ff"][b]if[/b][/color] (-[color="#ff8000"]1[/color] == source.IndexOf('$', idxs + [color="#ff8000"]1[/color]))
                   flag = [color="#0000ff"][b]false[/b][/color];
               [color="#0000ff"][b]else[/b][/color]
               {
                   idxs = source.IndexOf('$', idxs + [color="#ff8000"]1[/color]);
                   idxe = source.IndexOf('?', idxe + [color="#ff8000"]1[/color]);
               }
           }
       }


       [color="#0000ff"][b]private[/b][/color] [color="#2b91af"]IEnumerable[/color]<[color="#8000ff"]char[/color]> GetTagName([color="#8000ff"]string[/color] source)
       {
           [color="#0000ff"][b]for[/b][/color] ([color="#8000ff"]int[/color] i = source.IndexOf('$') + [color="#ff8000"]1[/color]; i < source.Length; i++)
               [color="#0000ff"][b]if[/b][/color] (source[i] == '@')
                   [color="#0000ff"][b]break[/b][/color];
               [color="#0000ff"][b]else[/b][/color]
                   [color="#0000ff"][b]yield[/b][/color] [color="#0000ff"][b]return[/b][/color] source[i];
       }
       [color="#0000ff"][b]private[/b][/color] [color="#2b91af"]IEnumerable[/color]<[color="#8000ff"]char[/color]> GetValue([color="#8000ff"]string[/color] source)
       {
           [color="#0000ff"][b]for[/b][/color] ([color="#8000ff"]int[/color] i = source.IndexOf('@') + [color="#ff8000"]1[/color]; i < source.Length; i++)
               [color="#0000ff"][b]if[/b][/color] (source[i] == '?')
                   [color="#0000ff"][b]break[/b][/color];
               [color="#0000ff"][b]else[/b][/color]
                   [color="#0000ff"][b]yield[/b][/color] [color="#0000ff"][b]return[/b][/color] source[i];
       }
   }
}

 

 

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...