2014-11-23 2 views
0

"1 Book price $ 12.00"을 포함하는 텍스트 파일이 있다고 가정 해 봅시다. 나는 에서이 고통을 읽고 파일을 읽은 후 INT 수량, 문자열 제품 _, 더블 가격 등 처럼 내 지역 변수를 설정하려면, 내 변수 값은문자열을 텍스트 파일에서 읽은 후 파싱하는 방법

quantity = 1; 
product_type = Book; 
price = 12.00; 

이 어떻게 수행하는 나에게 제안 할 수 있어야한다 그?

+2

Split() 함수를 사용하여 문자열 []을 얻은 다음 int (첫 번째 인덱스 - 수량) 및 double (마지막 인덱스 - 가격) 값을 파싱 할 수 있습니다. 그러나 더 나은 솔루션은이 구조화 된 데이터에 XML 파일을 사용하는 것입니다. 감사합니다, –

+1

또한 RegEx를 사용하여 텍스트 파일을 구문 분석 할 수 있지만 XML 파일은 더 나은 솔루션입니다. –

+0

이 파일을 작성하는 경우 구조화 된 XML 파일로 저장하십시오. 앞으로 코드를 유지 보수하기가 쉽습니다. 형식을 제어 할 수없는 외부 시스템에서이 파일을 가져 오는 경우 split() 및 귀하의 코드는 null, 빈 문자열 등을 처리 할만큼 충분히 방어 적입니다. – Ashwath

답변

-1
string str = "1 Book price $12.00"; 
string[] strArray = str.Split(' '); 
int quantity = Convert.ToInt32(strArray[0]); 
string product_type = strArray[1]; 
decimal price = Convert.ToDecimal(strArray[3].Replace("$", "")); 
1

데이터를 저장하기 위해 텍스트 파일을 사용해야하는 이유는 무엇입니까? XML은 이러한 종류의 데이터를 저장하고 구문 분석하는 훨씬 더 쉽고 간편한 방법입니다.

<Books> 
    <Book> 
     <Quantity>1</Quantity> 
     <Price>12</Price> 
    </Book> 
</Books> 

여기에는 많은 구문 분석 옵션이 있습니다. XMLDocument, XMLReader, XElement 등을 사용하여이 파일을로드하고 개별 요소를 파싱 할 수 있습니다. 인덱스 기반 문자열 조작은 텍스트 파일에 더 복잡한 데이터를 추가하는 경우 추악하고 오류가 발생하는 경향이 있습니다.

1

당신은 XML을 사용할 수 있습니다, 또는 당신은 구문은 정말 쉽고, XML보다는 그것의 더 가벼운 Here

JSON 찾아 볼 수 있습니다.

이것을 클래스 개체로 직접 읽을 수 있습니다. JSON은 다음과 같은 형태가 될 것이다의

예제 : - 여기에 코드 조각을의

[ 
    { 
     "Qty": 1, 
     "ProductType": "Book", 
     "Price": 12.01 
    }, 
    { 
     "Qty": 1, 
     "ProductType": "Pen", 
     "Price": 12.01 
    } 
] 

. Newtonsoft JSON에 대한 참조를 추가해야합니다.

using System; 
using System.Collections.Generic; 
using System.IO; 
using Newtonsoft.Json; 

namespace JSONExample 
{ 
    internal class Program 
    { 
     private static void Main(string[] args) 
     { 
      LoadJson(); 
     } 

     public static void LoadJson() 
     { 
      using (StreamReader r = new StreamReader(@"C:\Users\Derek\Desktop\JSON.txt")) 
      { 
       string json = r.ReadToEnd(); 
       List<Product> dataFile = JsonConvert.DeserializeObject<List<Product>>(json); 

       foreach (var product in dataFile.ToArray()) 
       { 
        Console.WriteLine("Type: {0} - Price: {1} - Quantity: {2}", product.ProductType, product.Price, 
         product.Qty); 
       } 
      } 

      Console.ReadKey(); 
     } 
    } 



    public class Product 
    { 
     public int Qty { get; set; } 
     public string ProductType { get; set; } 
     public float Price { get; set; } 
    } 

} 
관련 문제