繁体   English   中英

C#从文本文件中读取字符串

[英]C# Reading in strings from a Text File

对于你们来说,这可能是一个简单的例子……我有一个ViewModel类,该类生成一个字符串集合,以后将其绑定到我的UI。 我想更改逻辑,以便它不是手动输入字符串,而是从.txt文件中读取它们(因此,我给它提供了一个文件路径,并从该文件中读取了单词)。 谁能提供快速的解决方案? 非常感谢-本

public class VM
{
    public VM()
    {
        Words = LoadWords();

    }

    public IEnumerable<string> Words { get; private set; }

    private static IEnumerable<string> LoadWords()
    {
        Random random = new Random();

        string loremIpsum =
            "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
        string[] tokens = loremIpsum.Split(new char[] { ' ' });
        List<string> words = new List<string>();
        for (int i = 0; i < 500; i++)
        {
            words.Add(tokens[random.Next(tokens.Count())]);
        }
        return words;
    }
}

使用File.ReadAllLines()

private static IEnumerable<string> LoadWords(String filePath)
{
      List<String> words = new List<String>();
      foreach(String line in ReadAllLines(filePath))
      {

        string[] tokens = line.Split(new char[] { ' ' });
        for (int i = 0; i < 500; i++)
        {
            words.Add(tokens[random.Next(tokens.Count())]);
        }
      }
      return words;
}

将您的Words定义为ObservableCollection<String>而不是Enumerable<string> 据我所知,这足以将其绑定到UI:其余的代码对我来说似乎还不错。

如果需要获取文件的上下文,请使用File.ReadAllText()

更新

使用此代码段在标记化方面做得更好:

string filename = @"c:\myfile.txt";
string content = File.ReadAllText(filename);
        ObservableCollection<string> strings = new ObservableCollection<string>();
foreach (Match m in Regex.Matches(content,@"\b(\S+)\b"))
{
    strings.Add(m.Groups[1].Value);
}
 string line = "";
using (StreamReader sr = File.OpenText("PathToFile"))
{
    while ((line = sr.ReadLine()) != null)
    {
        if (line.Trim() != "")
        {
         string[] tokens = line.Split(new char[] { ' ' });
         //Process the tokens
        }
    }
}

这段代码会将一个文本文件读取到您的字符串数组中(假设每个字符串都在新行中):

    TextReader tr = File.OpenText("c:\LoremIpsum.txt");
    string s = null;
    List<string> list = new List<string>();
    while ((s = tr.ReadLine()) != null)
    {
        list.Add(s);
    }
    string[] tokens = list.ToArray();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM