C# 如何拆分字符串数组?

C# 如何拆分字符串数组?,c#,C#,我有一个包含以下内容的文件: Message1 : Some Random String 1 Message2 : Some Random String 2 Message3 : Some Random String 3 Message4 : Some Random String 4 Message5 : Some Random String 5 我正在尝试找出如何在“:”字符后拆分每一行 到目前为止,我已经尝试过了,但没有得到理想的输出: string splitConfig() {

我有一个包含以下内容的文件:

Message1 : Some Random String 1
Message2 : Some Random String 2
Message3 : Some Random String 3
Message4 : Some Random String 4
Message5 : Some Random String 5
我正在尝试找出如何在“:”字符后拆分每一行

到目前为止,我已经尝试过了,但没有得到理想的输出:

string splitConfig() {
    string split = ":";  
    string[] lines = File.ReadAllLines("config_file.cfg");
    string linesJoined = lines[0] + "\n" + lines[1] + "\n" + lines[2] + "\n" + lines[3] + "\n" + lines[4];  
    string output = linesJoined.Substring(linesJoined.IndexOf(split) + split.Length);
    return output;
}
这才刚刚回来

"Some Random String 1
Message2 : Some Random String 2
Message3 : Some Random String 3
Message4 : Some Random String 4
Message5 : Some Random String 5"
但我正在寻找以下输出:

{
    "Some Random String 1", 
    "Some Random String 2", 
    "Some Random String 3", 
    "Some Random String 4", 
    "Some Random String 5"
}
也许:

var result = input.Split('\n')
                  .Select(x => x.Substring(x.IndexOf(":") + 2));

您的要求有点难以理解,但我相信这将为您提供您想要的:

var messages = input.Split(new []{Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)
                    .Select(l => l.Split(' : ')[1])
                    .ToList();

这是另一个解决方案,只是为了好玩:

var result = 
    input.Split(new[] { " : ", "\n" }, StringSplitOptions.None)
         .Where((x, i) => i % 2 == 1);

根据您的更新,您似乎已经在将文件读入表示每行的字符串数组中,因此您现在所要做的就是为每行获取
后面的部分。您的算法并不遥远,但请尝试使用一点Linq,如下所示:

string Char = ":";  
string[] Messages = File.ReadAllLines(@"MessageMenu.cfg");

var Output = Messages.Select(s => s.Substring(s.IndexOf(Char) + Char.Length));
请注意,这不会返回单个字符串,而是一个,表示文件中的所有消息字符串。

string sourceText = @"
  Message1 : Some Random String 1
  Message2 : Some Random String 2
  Message3 : Some Random String 3
  Message4 : Some Random String 4
  Message5 : Some Random String 5
  " ;
Regex rx = new Regex( @"^\s*(.*?)\s+:\s+(.*?)\s+$" , RegexOptions.Multiline ) ; // using non-greedy accumulation here (.*?) to reduce backtracking
Dictionary<string,string> messages = rx
                                     .Matches(sourceText)
                                     .Cast<Match>()
                                     .ToDictionary(
                                        m => m.Groups[1].Value ,
                                        m => m.Groups[2].Value
                                     ) ;
string sourceText=@”
消息1:一些随机字符串1
信息2:一些随机字符串2
信息3:一些随机字符串3
消息4:一些随机字符串4
消息5:一些随机字符串5
" ;
Regex rx=new Regex(@“^\s*(.*?\s+:\s+(.*?\s+$”,RegexOptions.Multiline);//在此处使用非贪婪累积(.*)以减少回溯
字典消息=rx
.Matches(源文本)
.Cast()
.ToDictionary(
m=>m.Groups[1]。值,
m=>m.Groups[2]。值
) ;

@user3175478非常严肃地说,你的问题被否决了,因为1)不清楚你在问什么,2)你没有显示你尝试的代码+它给你带来的任何问题。让你明白。添加了我的代码