字符串到C#中的字典或数组

时间:2018-02-15 02:20:12

标签: c# c arrays dictionary

我有一个字符串如下:

  

Charlie Sheen很酷BBBB他喜欢跑BBB
  他什么时候跑的?BBBB

     

他住在这里BBBB

[我喜欢查理辛   BBBB

我想将字符串分成两个不同的数组。一个是关于B&#39和S&B本身的短语。或者甚至更好,有一个字典,其中短语作为键,B作为值。我还想忽略所有不以字母开头的空行和行。我该怎么做呢?

string[] newText = file.Split(new string[] { "\n", "\r\n",},StringSplitOptions.RemoveEmptyEntries);
int count = 0;
Regex symbol = new Regex("^[[]]$"); //these are the symbols I want to detect
Dictionary<string, string> patternedText = new Dictionary<string,string>();

foreach(string s in newText){
int bCount = 0;
count++;
bCount++; //position of where it detects a match
if(symbol.isMatch(s)){ 
newText[count-bCount] = s;
    }else{ newText[count] = s;
   patternedText.Add(newText[count],newText[count+1]);
}

基本上我希望数组的格式为:
带符号的短语
BBB
带符号的短语
BBBB
短语
带符号的BBB

并过滤掉所有空行和任何行上的符号,只添加到短语中。

2 个答案:

答案 0 :(得分:0)

以下是您可以做的事情:

  1. 使用'\ n'(新换行符)拆分字符串,这将为您提供 所有行的数组。
  2. 使用正则表达式和/或循环进行清理(删除只有一个符号的行和后续行中的BBB)。
  3. 创建字典和 迭代数组以将第(n)个元素作为键和第(n + 1)个 元素作为价值。 (注意边界线)。

答案 1 :(得分:0)

循环是一种理智而有效的方法,但如果你是一个LINQaholic:

var dictionary = file.Split(new[] {"\r\n", "\n"}, StringSplitOptions.RemoveEmptyEntries)
    .Select((line, index) => (line, index))
    .GroupBy(tuple => tuple.index / 2)
    .ToDictionary(group => group.First().line, group => group.Last().line);