我有一个像这样的字符串
abcdefghij
我想把这个字符串分成3个字符。 我想要的输出将是一个包含此
的字符串数组abc
def
ghi
j
是否可以使用string.Split()
方法?
答案 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
答案 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();
}