2017-01-02 66 views
-1

我这里有文件内容的文件:如何使用键值对从文件中获取字符串?

# Web surround localized strings 
# English language 
# 
# Important: This file must be saved with UTF-8 encoding 
# 

# General 

# GeoMarker - temporary pin markup. 
SERVERERROR    = Error!Please Contact admin. 
ERRORSTACKTRACE   = Stack Trace 

我需要从文件中获取根据key.Currently以上按摩我在文件之上SERVERERRORERRORSTACKTRACE键,我需要根据键获取massege 。

我该如何在c#中实现它?

+2

你有2.3K代表,让你知道什么是未来:你尝试过什么到目前为止,和你从哪里得到卡住?有很多关于在Web上读取c#文件的例子。 –

+0

考虑解析文本的几种方法也相当容易。用'='分割,使用正则表达式。过滤掉以'#'开头的行。为什么这样的“为我写代码”问题? –

+0

@PanagiotisKanavos你可以请示例吗? – Michael

回答

1
int counter = 0; 
string line; 
System.IO.StreamReader file = 
      new System.IO.StreamReader("s.txt"); 
while((line = file.ReadLine()) != null) 
{ 
if(line.Contains("SERVERERROR") || line.Contains("ERRORSTACKTRACE")) 
    Console.WriteLine (line); 
    counter++; 
} 
    file.Close(); 

输出:

SERVERERROR =错误,请联系管理员。 ERRORSTACKTRACE =堆栈跟踪

而且得到确切的错误:

...

if(line.Contains("SERVERERROR") || line.Contains("ERRORSTACKTRACE"))

Console.WriteLine (line.Split('=')[1].ToString()); 

...

+0

我得到这个值'SERVERERROR =服务器错误',但我希望得到这个键的价值SERVERERROR(即错误!请联系管理员。) – Michael

+0

尝试:Console.WriteLine line.Split('=')[0] .ToString()+“”+ line.Split('=')[1] .ToString()); OUTPUT:SERVERERROR错误!请联系管理员。 –

1

以下工作:

var str = "SERVERERROR    = Error!Please Contact admin."+ 
       "ERRORSTACKTRACE   = Stack Trace"; 

    var output = new Dictionary<string,string>(); 

    foreach(var item in str.Split('.').ToList()){ 
     var kv = item.Split('='); 
     output.Add(kv[0].Trim(),kv[1].Trim()); 
    } 

    Console.WriteLine(output["SERVERERROR"]); 
    Console.WriteLine(output["ERRORSTACKTRACE"]); 

检查此琴: https://dotnetfiddle.net/5LgiE7

+1

不完全。分隔符是换行符,而不是点。您的测试输入甚至没有换行符。无论如何,从文件读取不需要分割线,您可以读取单独的行 –

相关问题