按字符数计数拆分字符串并存储在字符串数组中

时间:2014-04-17 10:16:15

标签: c#

我有一个像这样的字符串

abcdefghij

我想把这个字符串分成3个字符。 我想要的输出将是一个包含此

的字符串数组
abc
def
ghi
j

是否可以使用string.Split()方法?

5 个答案:

答案 0 :(得分:3)

此代码将字符组分组为3,并将每个组转换为字符串。

string s = "abcdefghij";

var split = s.Select((c, index) => new {c, index})
    .GroupBy(x => x.index/3)
    .Select(group => group.Select(elem => elem.c))
    .Select(chars => new string(chars.ToArray()));

foreach (var str in split)
    Console.WriteLine(str);

打印

abc
def
ghi
j

小提琴:http://dotnetfiddle.net/1PgFu7

答案 1 :(得分:2)

IEnumerable<string> GetNextChars ( string str, int iterateCount )
{
    var words = new List<string>();

    for ( int i = 0; i < str.Length; i += iterateCount )
        if ( str.Length - i >= iterateCount ) words.Add(str.Substring(i, iterateCount));
        else words.Add(str.Substring(i, str.Length - i));

    return words;
}

这样可以避免在@ Sajeetharan的回答中ArgumentOutOfRangeException

编辑:对不起我以前完全愚蠢的回答:)这应该可以解决这个问题。

答案 2 :(得分:2)

使用一点Linq

static IEnumerable<string> Split(string str)
{
    while (str.Length > 0)
    {
        yield return new string(str.Take(3).ToArray());
        str = new string(str.Skip(3).ToArray());
    }
}

以下是Demo

答案 3 :(得分:1)

IEnumerable<string> Split(string str) {
    for (int i = 0; i < str.Length; i += 3)
        yield return str.Substring(i, Math.Min(str.Length - i, 3));
}

答案 4 :(得分:1)

不,我不相信只使用string.Split()就可以了。但是创建自己的函数很简单......

string[] MySplit(string input)
{
   List<string> results = new List<string>();
   int count = 0;
   string temp = "";

   foreach(char c in input)
   {
      temp += c;
      count++;
      if(count == 3)
      {
         result.Add(temp);
         temp = "";
         count = 0;
      }
   }

   if(temp != "")
      result.Add(temp);

   return result.ToArray();
}