C#将文本拆分为子字符串

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#将文本拆分为子字符串相关的知识,希望对你有一定的参考价值。

我实际上正在尝试将StreamReader.ReadLine()对象(例如“ 1 A&B 2 C&D”)拆分为“ 1”,“ A&B”,“ 2”和“ C&D”子字符串。有人知道实现此拆分的简单算法的想法吗?

答案

这样的事情(使用少量的Linq ::]

    static private List<string> Parse(string s)
    {
        var result = new List<string>();
        string[] rawTextParts = s.Split(new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' });
        var textParts = rawTextParts.Where(t => !string.IsNullOrWhiteSpace(t)).Select(t => t.Trim());
        foreach (string textPart in textParts)
        {
            string numberstring = s.Substring(0, s.IndexOf(textPart)).Trim();
            s = s.Substring(s.IndexOf(textPart) + textPart.Length);
            result.Add(numberstring);
            result.Add(textPart);
        }
        return result;
    }
另一答案

很难从您的问题中推断出确切的要求。但是根据您的示例,我会附带以下内容:

var input = "1 A & B 2 C & D"; // your input

var words = input.Split();

var builder = new StringBuilder();

foreach (var word in words)
{
    if (int.TryParse(word, out var value))
    {
        if (builder.Length > 0)
        {
            Console.WriteLine(builder.ToString()); // or add it to some collection
            builder.Clear();
        }
        Console.WriteLine(word); // or add it to some collection
    }
    else 
    {
        if (builder.Length > 0)
        {           
            builder.Append(' ');
        }
        builder.Append(word);
    }
}

if (builder.Length > 0) // leftovers
{
    Console.WriteLine(builder.ToString()); // or add it to some collection
}

当然,您可以逐个枚举char字符串,并检查它是否是数字,字符或空格等。

以上是关于C#将文本拆分为子字符串的主要内容,如果未能解决你的问题,请参考以下文章

sql将字符串拆分为始终相同数量的片段

根据唯一值将列表拆分为子列表

如何在iOS上将字符串拆分为子字符串?

C ++ - 将文本文件作为字符串读取,然后将字符串拆分为向量

如何将 Pig 元组拆分为子元组?

ruby - 当值更改时将数组拆分为子数组并忽略/删除该值