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#将文本拆分为子字符串的主要内容,如果未能解决你的问题,请参考以下文章