首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#如何用line#将openFileDialog中的txt文件放入数组scriptFile[][],并显示字符串内容

C#如何用line#将openFileDialog中的txt文件放入数组scriptFile[][],并显示字符串内容
EN

Stack Overflow用户
提问于 2018-06-06 06:28:19
回答 2查看 392关注 0票数 0

我正在尝试用C#创建一个工具。该工具允许用户逐行查看一些外语文本,并在下面的文本框中输入他们的人工翻译,提交并最终保存到新的文本文件中。

我尝试用openFileDialog打开一个.txt文件,然后通过一个for循环逐行发送,这个循环将添加到一个二维数组中,4件事:

代码语言:javascript
复制
Things we need:
        Array scriptFile[][]
            scriptFile[X][0] = Int holding the Line number
            scriptFile[X][1] = First line piece
            scriptFile[X][2] = Untranslated Text
            scriptFile[X][3] = Translated Text input

Array的第一部分是Integer中的行号。第二段和第三段是由制表符分隔的两段文本。

代码语言:javascript
复制
Example Text File:
Dog 슈퍼 지방입니다.
cat 일요일에 빨간색입니다.
Elephant    적의 피로 위안을 찾는다.
Mouse   그의 백성의 죽음을 복수하기 위해 싸우십시오.
racoon  즉시 의료 지원이 필요합니다.

然后:

代码语言:javascript
复制
So array: 
scriptFile[0][0] = 1
scriptFile[0][1] = Dog
scriptFile[0][2] = 슈퍼 지방입니다.
scriptFile[0][3] = "" (Later input as human translation)

如果我能破解它,那么其他的一切都会在短时间内到位。我在继续寻找解决方案,但我对C#的了解有限,因为我主要是Java/PHP方面的人:/

到目前为止,我已经对留置权进行了倒计时,并继续将所有内容排序到一个数组中。到目前为止,我有一些东西:

代码语言:javascript
复制
public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.continueButton.Click += new System.EventHandler(this.continueButton_Click);
        }
        private void continueButton_Click(object sender, EventArgs e)
        {
            if (openFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                System.IO.StreamReader sr = new System.IO.StreamReader(openFile.FileName);
                var lineCount = File.ReadLines(openFile.FileName).Count();
                MessageBox.Show(lineCount.ToString());
                sr.Close();
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            openFile.Filter = "Text files (.txt)|*.txt";
        }
    }
EN

回答 2

Stack Overflow用户

发布于 2018-06-06 07:33:00

我建议让你的翻译成为一个类,从长远来看,这会更好地服务于你。一个非常基本的类实现可能如下所示:

代码语言:javascript
复制
public class Translation
{
    public int Id { get; set; }
    public string Text { get; set; }
    public string TranslatedText { get; set; }

    public Translation()
    {

    }

    public IEnumerable<Translation> ReadTranslationFile(string TranslationFileName)
    {
        var translations = new List<Translation>();

        //implement reading in text file

        return translations;
    }

    public void WriteTranslationFile(string TranslationFileName, List<Translation> Translations)
    {
        //implement writing file
    }
}
票数 0
EN

Stack Overflow用户

发布于 2018-06-06 07:55:11

好了,你已经收到了两个完整的答案,但我会张贴我的意见,也许它将有助于找出正确的解决方案。

代码语言:javascript
复制
public void Main()
{
    List<LineOfText> lines = ReadTextFile("file.txt");

    // Use resulting list like this
    if (lines.Count > 0)
    {
        foreach (var line in lines)
        {
            Console.WriteLine($"[{line.LineNumber}] {line.FirstLinePiece}\t{line.UntranslatedText}");
        }
    }
}

class LineOfText
{
    public int LineNumber { get; set; }
    public string FirstLinePiece { get; set; }
    public string UntranslatedText { get; set; }
    public string TranslatedText { get; set; }
}

private List<LineOfText> ReadTextFile(string filePath)
{
    List<LineOfText> array = new List<LineOfText>();

    using (StreamReader sr = new StreamReader(filePath))
    {
        // Read entire file and split into lines by new line or carriage return symbol
        string[] lines = sr.ReadToEnd().Split(new char[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries);
        // Parse each line and add to the list
        for (int i = 0; i < lines.Length; i++)
        {
            int tabIndex = lines[i].IndexOf('\t');
            string firstPiece = lines[i].Substring(0, tabIndex);
            string restOfLine = lines[i].Substring(tabIndex + 1);

            array.Add(new LineOfText()
            {
                LineNumber = i,
                FirstLinePiece = firstPiece,
                UntranslatedText = restOfLine
            });
        }
    }

    return array;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50709809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档