在C#中查找字符串

时间:2013-11-17 13:42:40

标签: c#

由于我是C#的新手,我不知道如何在其中找到一个字符串 以下是样本数据。

NIZAKAT ALI CHANNA s/o SHAMA NAZ.
MUHAMMAD USAMAN S/OABDUREHMAN s/o WEL MARK (PVT) LTD.
MAHA SECURITIES (PVT) LTD s/o REHAN AHMED.
AL-REHMAT TRADERS PVT LTD s/o Yasar Ayub S/O Mohammad Ayub Khan.
MUHAMMAD HASSAN s/o BATA SHOES SADDAR BAZAR C/O RANA KHALID PERVAIZ.

我希望在FIRST NAME ARRAY中保存名字,在第二个数组中保存姓氏。我怎么能这样做?

我希望我的数据表示如下:

 | First Name------------------ | Last Name |
1| NIZAKAT ALI CHANNA -- | SHAMA NAZ |
2| MUHAMMAD USAMAN --- | ABDUREHMAN |
3| MAHA SECURITIES ----- - | REHAN AHMED |
4| AL-REHMAT --------------- | Yasar Ayub |
5| MUHAMMAD HASSAN ---- | RANA KHALID PERVAIZ |

我能用C#解决所有这些表达的解决方案吗?

3 个答案:

答案 0 :(得分:3)

您的样本数据是否包含换行符?

string data = "NIZAKAT ALI CHANNA s/o SHAMA NAZ.\n MUHAMMAD USAMAN S/OABDUREHMAN s/o WEL MARK (PVT) LTD.\n MAHA SECURITIES (PVT) LTD s/o REHAN AHMED.\n AL-REHMAT TRADERS PVT LTD s/o Yasar Ayub S/O Mohammad Ayub Khan.\n MUHAMMAD HASSAN s/o BATA SHOES SADDAR BAZAR C/O RANA KHALID PERVAIZ.";

如果没有新行字符,则按点字符分割,因为它标记每个条目的结尾。否则(或者你不知道),用新的行和点字符分开。

var split = data.Split(new []{'.', '\n'}, StringSplitOptions.RemoveEmptyEntries);

现在,为了存储数据,你真的想要使用一个类

class Person
{ 
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

获取数据 - 按“s / o”拆分每一行,然后从新创建的拆分中获取第一项和第二项。第三项是可选的,我想这是一家公司。

var persons = split.Select(entry => entry.Split(new[] { "s/o" }, StringSplitOptions.RemoveEmptyEntries))
                   .Select(lineSplit => new Person { FirstName = lineSplit[0], LastName = lineSplit[1] })
                   .ToList();

答案 1 :(得分:2)

您可以使用Split功能,将它们拆分为“s / o”,如下所示:

string data = "NIZAKAT ALI CHANNA s/o SHAMA NAZ. MUHAMMAD USAMAN S/OABDUREHMAN s/o WEL MARK (PVT) LTD.  MAHA SECURITIES (PVT) LTD s/o REHAN AHMED. AL-REHMAT TRADERS PVT LTD s/o Yasar Ayub S/O Mohammad Ayub Khan. MUHAMMAD HASSAN s/o BATA SHOES SADDAR BAZAR C/O RANA KHALID PERVAIZ."

string[] splittedData = data.Split(new string[]{"s/o"}, stringSplitOptions.None);

“SplittedData”是您的数据数组,其中包含“FirstName”和“LastName。

他们使用这样的空间拆分他们:

for(int i = 0; i < splittedData.Length; i++)
{
string[] firstNameLastName = splittedData[i].Split(' ');
// the index 0 of firstNameLastName array is the first name, add this to the first name array, and the index 1 of firstNameLastName array is the last name, add this to the last name array
}

答案 2 :(得分:0)

我不知道这些数据在哪里,我猜它们是在几行的文件中 每一行都是一个人

    StreamReader reader=new StreamReader("file.txt");
    int index=1;
    while(!reader.EndOfStream)
    {
        string line=reader.ReadLine();
        string []nameparams=line.Split(new string[]{"s/o"}, StringSplitOptions.None);
        Console.WriteLine("{0}|{1}------|{2}|",index,nameparams[0],nameparams[1]);
    }
    reader.Close();