C# 按字符数拆分字符串并存储在字符串数组中
我有一根这样的绳子C# 按字符数拆分字符串并存储在字符串数组中,c#,C#,我有一根这样的绳子 abcdefghij 我不是要把这个字符串每个拆分3个字符。 我想要的输出将是一个包含以下内容的字符串数组 abc def ghi j 可以使用string.Split()方法?IEnumerable Split(string str){ IEnumerable<string> Split(string str) { for (int i = 0; i < str.Length; i += 3) yield return str.
abcdefghij
我不是要把这个字符串每个拆分3个字符。
我想要的输出将是一个包含以下内容的字符串数组
abc
def
ghi
j
可以使用string.Split()
方法?IEnumerable Split(string str){
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));
}
对于(int i=0;i
IEnumerable拆分(字符串str){
对于(int i=0;i
不,我不相信只使用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();
}
string[]MySplit(字符串输入)
{
列表结果=新列表();
整数计数=0;
字符串temp=“”;
foreach(输入中的字符c)
{
温度+=c;
计数++;
如果(计数=3)
{
结果。添加(温度);
温度=”;
计数=0;
}
}
如果(温度!=“”)
结果。添加(温度);
返回result.ToArray();
}
不,我不相信只使用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();
}
string[]MySplit(字符串输入)
{
列表结果=新列表();
整数计数=0;
字符串temp=“”;
foreach(输入中的字符c)
{
温度+=c;
计数++;
如果(计数=3)
{
结果。添加(温度);
温度=”;
计数=0;
}
}
如果(温度!=“”)
结果。添加(温度);
返回result.ToArray();
}
此代码将字符分成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
Fiddle:此代码将字符分成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
Fiddle:IEnumerable GetNextChars(字符串str,int iterateCount)
{
var words=新列表();
for(int i=0;i=iterateCount)words.Add(str.Substring(i,iterateCount));
添加(str.Substring(i,str.Length-i));
返回单词;
}
这将避免@Sajeetharan的答案中出现
ArgumentOutOfRangeException
编辑:很抱歉,我之前的回答完全是愚蠢的:)这应该可以做到这一点。IEnumerable GetNextChars(string str,int iterateCount)
{
var words=新列表();
for(int i=0;i=iterateCount)words.Add(str.Substring(i,iterateCount));
添加(str.Substring(i,str.Length-i));
返回单词;
}
这将避免@Sajeetharan的答案中出现
ArgumentOutOfRangeException
编辑:很抱歉,我之前的回答完全是愚蠢的:)这应该可以达到目的。使用一点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());
}
}
静态IEnumerable拆分(字符串str)
{
而(str.Length>0)
{
返回新字符串(str.Take(3.ToArray());
str=新字符串(str.Skip(3.ToArray());
}
}
下面是使用一点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());
}
}
静态IEnumerable拆分(字符串str)
{
而(str.Length>0)
{
返回新字符串(str.Take(3.ToArray());
str=新字符串(str.Skip(3.ToArray());
}
}
以下是您的示例中的是要在每三个位置拆分它,还是要在特定字符后拆分它,如
c
、f
、i
?字符串。拆分(…)至少需要一个字符,因此我不知道如何使用它。如何将String.Substring(…)与一个简单循环结合使用?请参见疯狂方式String[]t=Regex.Matches(“abcdefghij”,“{1,3}”).Cast().Select(m=>m.Value.ToArray()代码>@UlugbekUmirov:是的。。。非常疯狂在你的例子中,你是想在每三个位置分割它,还是想在特定的字符之后分割它,比如c
,f
,i
?string.split(…)至少需要一个字符,所以我不知道如何使用它。如何将String.Substring(…)与一个简单循环结合使用?请参见疯狂方式String[]t=Regex.Matches(“abcdefghij”,“{1,3}”).Cast().Select(m=>m.Value.ToArray()代码>@UlugbekUmirov:是的。。。非常疯狂的ArgumentOutOfRangeException
-1这不适用于OPArgumentOutOfRangeException
-1提供的输入示例这不适用于OPI提供的输入示例。我会使用字符串生成器或char[]
而不是像这样重复的串联。@Rawling:可能。。。在我看来,这不值得担心,但如果它符合您的喜好,那么进行额外的步骤显然没有坏处。我会使用字符串生成器或char[]
而不是像这样重复的串联。@Rawling:也许。。。在我看来,这真的不值得担心,但如果它符合你的喜好,那么采取额外的步骤显然没有坏处。不需要.tocharray()
。对我来说似乎有点过头了。。。只是为了使用LINQ@UlugbekUmirov很好,这不是为了使用Linq,而是为了清晰易读。将字符分组为3组,然后合并字符。对我来说似乎很简单。你的代码解决了我的问题。thx uNo需要.ToCharArray()
。对我来说似乎有点过分了。。。只是为了使用LINQ@UlugbekUmirov很好,这不是为了使用Linq,而是为了清晰易读。将字符分组为3组,然后合并字符。对我来说似乎很简单。你的代码解决了我的问题。thx uDoesn甚至没有编译。。。返回类型不匹配。出于某种原因,@Sajeetharan删掉了使这项工作成功的关键部分,这使得他们的答案变得更加糟糕。你需要做的就是在你以前的答案中添加yield
)遗憾的是,我不知道yield
关键字的用法。我会的