【发布时间】:2011-12-16 00:35:52
【问题描述】:
是否有为每个 714 字符拆分一个字符串?这是由于 c# 中的 debug.writeline 限制
【问题讨论】:
-
是的 - what have you tried?
-
如果您对日志文件执行 .WriteLine() 则没有限制,也许您也可以考虑这一点.. 但需要查看到目前为止您拥有的代码..
标签: c#
是否有为每个 714 字符拆分一个字符串?这是由于 c# 中的 debug.writeline 限制
【问题讨论】:
标签: c#
是的,我会使用Substring:
string myString = "Some very long string you need to output.";
for(int i = 0; i < myString.length; i += 714) {
Debug.WriteLine(myString.Substring(i, Math.Min(714, myString.Length - i)));
}
或者,对于一个花哨的单线:
foreach(var s in Regex.Matches(myString, ".{,714}")) Debug.WriteLine(s.Value);
【讨论】:
您可以使用以下代码:
static IEnumerable<string> Split(string str, int chunkSize)
{
return Enumerable.Range(0, str.Length / chunkSize)
.Select(i => str.Substring(i * chunkSize, chunkSize));
}
来自Splitting a string into chunks of a certain size
并制作自己的 writeline 方法
【讨论】:
用这个解决了
int chunkSize = 700;
int stringLength = str.Length;
for (int i = 0; i < stringLength; i += chunkSize)
{
if (i + chunkSize > stringLength) chunkSize = stringLength - i;
Debug.WriteLine(str.Substring(i, chunkSize));
}
【讨论】:
这是一个可以解决问题的扩展方法(没有 LINQ 只是为了保持清晰):
public static string[] SplitLength(this string val, int length)
{
var parts = new List<string>();
for(int i = 0; i < val.Length; i += length)
{
parts.Add(val.Substring(i * length, length));
}
return parts.ToArray();
}
【讨论】: