在一定字符数后拆分字符串
本文关键字:拆分 字符串 字符 | 更新日期: 2023-09-27 18:36:36
我需要一些帮助。我正在使用带有异常详细信息的文本文件编写错误日志。有了这个,我希望我的堆栈跟踪详细信息像下面一样写,而不是直线,以避免用户滚动记事本的滚动条,或者假设在第 100 个字符上,字符串将被写入下一行。我不知道如何实现这一点。提前谢谢。
示例(这是我当前的输出全部在直线上)
STACKTRACE:
at stacktraceabcdefghijklmnopqrstuvwxyztacktraceabcdefghijklmnopqrswxyztacktraceabcdefghijk
**我想要的输出(字符串将在一定字符计数后写入下一行)
STACKTRACE:
at stacktraceabcdefghijklmno
pqrstuvwxyztacktraceabcdefgh
ijklmnopqrswxyztacktraceabcd
efghijk
我的代码
builder.Append(String.Format("STACKTRACE:"));
builder.AppendLine();
builder.Append(logDetails.StackTrace);
以下示例每
行拆分 10 个字符,您可以根据需要进行更改{N}
其中 N 可以是任何数字。
var input = "stacktraceabcdefghijklmnopqrstuvwxyztacktraceabcdefghijklmnopqrswxyztacktraceabcdefghijk";
var regex = new Regex(@".{10}");
string result = regex.Replace(input, "$&" + Environment.NewLine);
Console.WriteLine(result);
这是演示
您可以使用以下代码:
string yourstring;
StringBuilder sb = new StringBuilder();
for(int i=0;i<yourstring.length;++i){
if(i%100==0){
sb.AppendLine();
}
sb.Append(yourstring[i]);
}
你可以为此创建一个函数
string splitat(string line, int charcount)
{
string toren = "";
if (charcount>=line.Length)
{
return line;
}
int totalchars = line.Length;
int loopcnt = totalchars / charcount;
int appended = 0;
for (int i = 0; i < loopcnt; i++)
{
toren += line.Substring(appended, charcount) + Environment.NewLine;
appended += charcount;
int left = totalchars - appended;
if (left>0)
{
if (left>charcount)
{
continue;
}
else
{
toren += line.Substring(appended, left) + Environment.NewLine;
}
}
}
return toren;
}
最佳、最简单和通用的答案:)。只需将 splitAt
的值设置为您希望它中断的字符数即可。
string originalString = "1111222233334444";
List<string> test = new List<string>();
int splitAt = 4; // change 4 with the size of strings you want.
for (int i = 0; i < originalString.Length; i = i + splitAt)
{
if (originalString.Length - i >= splitAt)
test.Add(originalString.Substring(i, splitAt));
else
test.Add(originalString.Substring(i,((originalString.Length - i))));
}