C#从字符开始删除多个子字符串

时间:2015-10-15 12:49:26

标签: c# string

我有以下字符串:

string nameString = "Sean Pen / 212321\n Chris Brown / 578,4\n Sandy Sanders / 879757"

我需要提取名称,所以我得到以下结果:

Sean Pen 
Chris Brown 
Sandy Sanders

我尝试过使用子字符串方法,例如:

nameString = nameString(0,nameString.LastIndexOf("/")+1);

删除最后一个号码,但如何在字符后提取每个号码' /'并保留名称?

5 个答案:

答案 0 :(得分:0)

如果您愿意,可以使用正则表达式,或者您可以使用常规.net字符串函数执行以下操作:

static void Main(string[] args)
{
    string nameString = "Sean Pen / 212321\n Chris Brown / 578,4\n Sandy Sanders / 879757";

    var names = ExtractNames(nameString);

    foreach (var name in names)
    {
        Console.WriteLine("-" + name + "-");
    }   
}

static List<string> ExtractNames(string input)
{
    return input.Split('\n').Select(RemoveNumbers).ToList();
}

static string RemoveNumbers(string input)
{
    return new string(input.Where(c => char.IsLetter(c) || char.IsSeparator(c)).ToArray()).Trim();
}

这会将字符串拆分为每个\ n字符的行,然后删除所有不是字母或分隔符的字符。最后,它将修剪字符串以删除任何空格

答案 1 :(得分:0)

我假设你打破了这个,因为你想要使用数据 尝试使用分割功能

如果你分开&#34; \ n&#34;和&#34; /&#34;你将有一个数组,第一个元素是名称,第二个是数字的字符串

foreach(var row in nameString.Split('\n','\r'))//covers line feed and carriage return
{
    data = row.Split('/'));
    name = data[0];
    number = data[1];
}

答案 2 :(得分:0)

你不需要正则表达式,String.Split和一点点LINQ就足够了:

string[] names = nameString.Split(new[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries)
    .Select(s => s.Split('/')[0].Trim())
    .ToArray();

首先用换行符分割得到三个标记,然后用/拆分它们,得到只包含名字的第一个标记。最后使用String.Trim删除前导或尾随空格。

答案 3 :(得分:0)

组合或正则表达式和字符串函数应该可以满足您的需求。

var names = Regex.Replace("Sean Pen / 212321\n Chris Brown / 578,4\n Sandy Sanders / 879757", @"([^A-Za-z ])\w+", string.Empty).Split('/');

foreach (var name in names)
    Console.WriteLine(name.Trim());

答案 4 :(得分:-1)

您可以使用子字符串函数

        string nameString = "Sean Pen / 212321\n Chris Brown / 578,4\n Sandy Sanders / 879757";

        string sean = nameString.Substring(0, 8);
        string chris = nameString.Substring(19, 11);
        string sandy = nameString.Substring(40, 14);

        Console.WriteLine(sean);
        Console.WriteLine(chris);
        Console.WriteLine(sandy);