从.txt

时间:2015-07-22 07:55:19

标签: c# arrays string text pc

我有一个大约30个单词(长度不一样)的文本文件。我试图将所有这些单词带入程序并将它们存储到一个'x'元素数组中(x是单词数)。

有任何帮助吗?我实际上是在学习的第二天。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Hangman {
    class Program {
        static void Main(string[] args) {
            //StreamReader myWordList = new  StreamReader("WordList.txt");//string stringArray[] = StreamReader(WordList.txt);//.WordList.txt;

            String myWordArrays[] = File.ReadAllLines(@
            "C:\Users\YouTube Upload\Documents\Visual Studio 2013\Projects\Hangman");

            Console.WriteLine(myWordArrays[2]);
            Console.ReadLine();
        }
    }
}

这是完整的代码(上图) - 我收到了这些错误:

Error   1   Bad array declarator: To declare a managed array the rank specifier precedes the variable's identifier. To declare a fixed size buffer field, use the fixed keyword before the field type.  c:\users\youtube upload\documents\visual studio 2013\Projects\Hangman\Hangman\Program.cs    16  32  Hangman

Error   2   Invalid expression term '=' c:\users\youtube upload\documents\visual studio 2013\Projects\Hangman\Hangman\Program.cs    16  35  Hangman

我真的不明白,因为我称之为我应该这样(或者我会这么认为?o.0)

而且:

Error   3   ; expected  c:\users\youtube upload\documents\visual studio 2013\Projects\Hangman\Hangman\Program.cs    16  35  Hangman

也是这个

Error   4   ; expected  c:\users\youtube upload\documents\visual studio 2013\Projects\Hangman\Hangman\Program.cs    16  37  Hangman

在这里原谅我可怕的格式 - 我是这个网站的新手,我只是习惯了这一切。 :(

4 个答案:

答案 0 :(得分:2)

从文件中获取值如下:

string[] myWordArrays = File.ReadAllLines(@"C:\Users\YouTube Upload\Documents\Visual Studio 2013\Projects\Hangman\yourfilename");

您的整个计划:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Hangman {
    class Program {
        static void Main(string[] args) {
            string[] myWordArrays = File.ReadAllLines(@"C:\Users\YouTube Upload\Documents\Visual Studio 2013\Projects\Hangman\yourfilename");

            Console.WriteLine(myWordArrays[2]);
            Console.ReadKey();
        }
    }
}

P.S。你在这行代码中犯了什么错误

String myWordArrays[] = File.ReadAllLines(@
            "C:\Users\YouTube Upload\Documents\Visual Studio 2013\Projects\Hangman\");                                   
  1. 变量声明不正确。正确的是

    string[] myWordArrays = ...

  2. '@'符号应该放在包含转义字符的字符串之前,并且应该位于同一行。如果线路太长会怎么样?然后你可以将这两个这个符号和字符串移到下一行。

  3. string[] myWordArrays = File.ReadAllLines( @"C:\Users\YouTube Upload\Documents\Visual Studio 2013\Projects\Hangman");

    1. File.ReadAllLines方法只接受完整路径而不接受相对路径。要指向位于存储执行文件的同一文件夹中的文件(bin文件夹),可以使用Directory.GetCurrentDirectory()方法。所以你可以把它改成:

      string filename = 1.txt; File.ReadAllLines(Directory.GetCurrentDirectory()+“\”+ filename);

答案 1 :(得分:1)

根据用于拆分字符串的字符,您可以使用以下方法之一:

        var streamReader = new StreamReader("file");
        var words = streamReader.ReadToEnd();

        var wordArray = words.Split(new[] { Environment.NewLine }, StringSplitOptions.None); // For words split by lines where you know the format of the line ending
        var wordArray = words.Split(new [] {"\n", "\r\n"}, StringSplitOptions.None); // For words split by lines where the format could be unix or windows
        var wordArray = words.Split(','); // For words split by comma

因此,对于更多的探索StreamReader.ReadToEnd()返回一个字符串。该类有许多方法,如下所述: https://msdn.microsoft.com/en-us/library/system.string(v=vs.110).aspx

这些方法包括一个“split”方法,它接受一个字符数组(或多个逗号分隔的字符)(char用单引号(')表示)或带字符串拆分选项的字符串数组。

在后者中,我们使用new [] { "string1", "string2", "..."}定义一个新的字符串数组,这里数组的类型是隐式的,但如果需要,我们可以指定new string[] {...},或传入一个字符串数组已经定义了。第二个选项是带有两个值的枚举; NoneRemoveEmptyEntries,在此处定义: https://msdn.microsoft.com/en-us/library/system.stringsplitoptions(v=vs.110).aspx

string.split方法还有其他重载(位于顶部链接中)。

答案 2 :(得分:0)

我要感谢你们所有人的巨大帮助。我的格式不正确,但我想我明白它是如何工作的!大声笑。至少它不是错误的/丢失的分号,是吗? :)

  namespace Hangman
   {
class Program
    {
    static void Main(string[] args)
      {
        //StreamReader myWordList = new StreamReader("WordList.txt");//string stringArray[] = StreamReader(WordList.txt);//.WordList.txt;

        String[] myWordArrays = File.ReadAllLines("WordList.txt");

        Console.WriteLine(myWordArrays[2]);
        Console.ReadLine();


      }


    }
}

非常感谢你们。这修复了它,它确实成功地显示了第3个元素(字符串),这是建议,恰好在第三行[2] - 完美。谢谢!!!

答案 3 :(得分:-1)

试试这个,它可能对你有帮助。

private void PutTextIntoArray()
{
    var array = ReadTextFile("C:\\WordList.txt").GetTotalWords();
}    

private static string ReadTextFile(string file)
{
    try
    {
        return File.ReadAllText(file);
    }
    catch (IOException ex)
    {
        return ex.Message;
    }
    catch (Exception ex)
    {
        return ex.Message;
    }
}
public static class Extensions
{
    public static string ReplaceMultipleSpacesWith(this string text, string newString)
    {
        return Regex.Replace(text, @"\s+", newString);
    }

    public static string[] GetTotalWords(this string text)
    {
        text = text.Trim().ReplaceMultipleSpacesWith(" ");
        var words = text.Split(' ');
        return words;
    }
}