我有一个大约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
在这里原谅我可怕的格式 - 我是这个网站的新手,我只是习惯了这一切。 :(
答案 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\");
变量声明不正确。正确的是
string[] myWordArrays = ...
'@
'符号应该放在包含转义字符的字符串之前,并且应该位于同一行。如果线路太长会怎么样?然后你可以将这两个这个符号和字符串移到下一行。
string[] myWordArrays = File.ReadAllLines(
@"C:\Users\YouTube Upload\Documents\Visual Studio 2013\Projects\Hangman");
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[] {...}
,或传入一个字符串数组已经定义了。第二个选项是带有两个值的枚举; None
和RemoveEmptyEntries
,在此处定义:
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;
}
}