2017-07-08 3 views
0

Hier sind Dateidaten, die ich verwenden möchte und ich bin vertraut mit Python und ich kann keine Lösung finden, was ich hier brauche. Danke fürs Helfen.

Preise:

Einige verkauft "etwas 1", ist der Preis 20 £
Einige "etwas 2" verkauft, ist der Preis 40 £
Einige verkauft "etwas 3", ist der Preis £ 60
Einige verkauft "etwas 4", ist der Preis 80 £
Some "etwas 5" verkauft, der Preis ist 100 £
C# Wie bekomme ich mehrere Elemente in Textdatei mit in Grundlagen für

using System; 
using System.IO; 

namespace CalcPrices 
{ 
    internal class Program 
    { 
     private static void Main() 
     { 
      string[] lines = File.ReadAllLines(
       @"C:\Users\Eggii\Desktop\code\c# katse\GoodsPrices\GoodsPrices\bin\Debug\PriceOfSoldGoods.txt"); 

      for (int i = 0; i < lines.Length; i++) 
      { 
       string[] line = lines[i].Split(); 

       for (int j = 0; j < line.Length; j++) 
       { 
        Console.WriteLine(line[6]); 


        // Output should be something like: 
        // 20 
        // 40 
        // 60 
        // 80 
        // 100 
        // because I want every 7th element in line 
       } 
      } 
     } 
    } 
} 
+0

Versuchen Sie einfach, durch Whitespace zu teilen. Es sieht aus wie diese 'string [] Zeile = Linien [i] .Split (' ') ' –

Antwort

0

ändern diese:

string[] line = lines[i].Split(); 

hierfür:

string[] line = lines[i].Split(' '); 

Dadurch wird die Zeichenfolge mit dem weißen Raum Begrenzer aufgeteilt.

0

Sie benötigen Linie durch Leerzeichen zu trennen und innere Schleife entfernen:

using System; 
using System.IO; 

namespace CalcPrices 
{ 
    internal class Program 
    { 
     private static void Main() 
     { 
      string[] lines = File.ReadAllLines(
       @"C:\Users\Eggii\Desktop\code\c# katse\GoodsPrices\GoodsPrices\bin\Debug\PriceOfSoldGoods.txt"); 

      for (int i = 0; i < lines.Length; i++) 
      { 
       string[] line = lines[i].Split(' '); 
       Console.WriteLine(line[6]); 
      } 
     } 
    } 
} 

Wenn Sie alle Daten in einer Zeile lesen möchten, so dass Sie Code dafür ändern müssen:

... 
    internal class Program 
    { 
     private static void Main() 
     { 
      string line = File.ReadAllText(
       @"C:\Users\Eggii\Desktop\code\c# katse\GoodsPrices\GoodsPrices\bin\Debug\PriceOfSoldGoods.txt"); 

      string[] splitLines = line.Split(' '); 
      for (int j = 6; j < line.Length; j += 8) 
      { 
       Console.WriteLine(line[j]); 
      } 
     } 
    } 
+0

int j = 6 hat mir geholfen, also musste ich die zweite Schleife ändern,' for (int j = 6; line.Length - 1> j; j ++) {Console.WriteLine (Zeile [j]); } 'aber in diesem Fall ist es egal .split() oder .split (''), weil beide nur Leerzeichen zwischen Wörtern entfernen?!?! – Eggii

+0

@Eggii Ja, es wird in beiden Fällen die Aufteilung nach Leerzeichen zwischen Wörtern entfernen, [siehe] (https://referencesource.microsoft.com/#mscorlib/system/string.cs1151). Sie können also das Wort nehmen, das Ihren Preis darstellt: "20,40 ..." –

0

Diese ist was du tun musst:

string[] lines = File.ReadAllLines(@"C:\Users\Eggii\Desktop\code\c# katse\GoodsPrices\GoodsPrices\bin\Debug\PriceOfSoldGoods.txt"); 
foreach(string line in lines) 
{ 
    Console.WriteLine(line.Split(new[] { "price is " }, StringSplitOptions.None)[1].Replace(" £", "")); 
} 
0

Also füge ich einige meiner Schlussfolgerung hinzu, vielleicht hilft es jemandem. Hier war das Problem mit Titel "preise:" oben auf dem Text und verursacht Problem, weil diese Zeichenfolge für for-loop (IndexOutOfRange) zu kurz war. Also in diesem Fall funktioniert mein eigener korrigierter Code gut.

using System; 
using System.IO; 

namespace CalcPrices 
{ 
    internal class Program 
    { 
     private static void Main() 
     { 
      string[] lines = File.ReadAllLines(
       @"C:\Users\Eggii\Desktop\code\c# katse\GoodsPrices\GoodsPrices\bin\Debug\PriceOfSoldGoods.txt"); 

      for (int i = 0; i < lines.Length; i++) 
      { 
       string[] line = lines[i].Split(); 

       for (int j = 6; j < line.Length-1; j++) 
       { 
        Console.WriteLine(line[j]); 
       } 
      } 
     } 
    } 
} 
Verwandte Themen