gpt4 book ai didi

c# - 从 C# 中的 .txt 文件中的一行中获取多个子字符串

转载 作者:太空宇宙 更新时间:2023-11-03 22:39:16 25 4
gpt4 key购买 nike

我正在处理的部分类作业要求我从 .txt 文件中分离出“学生”信息的某些部分,例如姓氏、名字和 GPA。虽然我可以让姓氏正确显示,但超出这个范围是不确定的,名字将被切断或看似随机地进入中间首字母。我需要帮助根据线条中的标记(撇号)获得一致的截止点。

这是位于程序的 Bin Debug 中的 .txt 文件 Students2 的示例

(LIST (LIST 'Abbott 'Ashley 'J ) '8697387888 'ajabbott@mail.usi.edu 2.3073320999676614 )
(LIST (LIST 'Abbott 'Bradley 'M ) 'NONE 'bmabbott@mail.usi.edu 3.1915725161177115 )
(LIST (LIST 'Abbott 'Ryan 'T ) '8698689793 'rtabbott@mail.usi.edu 3.448215586562192 )
(LIST (LIST 'Abel 'Heather 'M ) '8698689386 'hmabel@mail.usi.edu 3.2517764202656974 )

希望我所说的标记的意思是有道理的,如果有人想知道的话,这些信息是假的。

以下是我目前的代码,其中一些是在示例中提供的。

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

namespace ConsoleApplication61
{
class Program
{
static void Main(string[] args)
{

StreamReader inFile;
string inLine;

if (File.Exists("Students2.txt"))
{
try
{



using (StreamWriter Malachi = File.AppendText("Students2.txt"))
{
Malachi.WriteLine("(LIST (LIST 'Constant 'Malachi 'J ) '1832878847 'mconstant@mail.usi.edu 4.0000000000000000 )");
}

inFile = new StreamReader("Students2.txt");
while ((inLine = inFile.ReadLine()) != null)
{
int start = inLine.IndexOf("'");
if (start >= 0)
{
inLine = inLine.Substring(start);
int end = inLine.IndexOf(" ");
string lastname = inLine.Substring(0, end);
int endTwo = inLine.IndexOf(" ");
string firstname = inLine.Substring(end, endTwo);
int endThree = inLine.IndexOf(" ");
string email = inLine.Substring(endTwo, endThree);
Console.WriteLine( lastname + firstname );

}
}
}


catch (System.IO.IOException exc)
{
Console.WriteLine("Error");
}
}
}
}
}

我再次想知道在特定点切断方面我做错了什么。非常感谢任何帮助。

最佳答案

你可以使用拆分函数和替换函数来得到你正在寻找的东西,就像这样

    string test = "(LIST (LIST 'Constant 'Malachi 'J ) '1832878847 'mconstant@mail.usi.edu 4.0000000000000000 )";

test = test.Replace(")","");

string[] abc = test.Split(new string[] { "'" }, StringSplitOptions.None);

Console.WriteLine("Last Name =" + abc[1]);
Console.WriteLine("First Name =" + abc[2]);
Console.WriteLine("Middle Initial =" + abc[3]);
Console.WriteLine("Email gpa =" + abc[abc.Length-1]);

更新

如果 gpa 没有撇号,您可以获得如下这些值,只需用此替换最后一行

    Console.WriteLine("Email =" + (abc[abc.Length-1]).Split(' ')[0]);
Console.WriteLine("gpa =" + (abc[abc.Length-1]).Split(' ')[1]);

这是一个 fiddle https://dotnetfiddle.net/vJYLXW

关于c# - 从 C# 中的 .txt 文件中的一行中获取多个子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53232093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com