在 C# 中以多行拆分长字符串
Split long string in multi lines in C#
我正在从 Dynamics CRM 获取数据,一些字段的类型是多行文本。
我只能使用 en.GetAttributeValue<string>("multiline_field_name")
.
将它们作为字符串读取
我的问题是我在 HTML 标记中呈现所述字符串,并且一些单词中断了。
例如
container div
************************
This is a very long stri
ng. Any help would be ve
ry much appreciated.
************************
我的容器元素只能包含 100 多个字符,所以我想我应该在每 100 个字符处断开字符串。
这是我的代码:
private string SplitOnNewLine(string str)
{
StringBuilder sb = new StringBuilder();
int splitOnIndex = 100;
int cnt = 1;
for(int i = 0; i <str.Length; i++)
{
if(i % splitOnIndex == 0 && i != 0)
{
if(str[i] == ' ')
{
sb.Insert(i, "<br>");
}
else
{
// Go backwards until space is found and append line break
int copied = splitOnIndex * cnt;
if (copied >= str.Length) break;
do
{
copied--;
if(str[copied] == ' ')
{
sb.Insert(copied, "<br>");
break;
}
}while (str[copied] != ' ');
}
cnt++;
}
else
{
sb.Append(str[i]);
}
}
return sb.ToString();
}
它仍然没有按预期工作。
我期待这样的事情:
container div
************************
This is a very long
string. Any help would
be very much
appreciated.
************************
P.S。我也试过使用断字和换行 CSS 规则无济于事。
如何在每 100 个字符后分成两个字符串,反向查找例如' ' 并像您已经做的那样对字符串的第二部分进行递归处理。
string output = "";
for(int i = 0; i < input.Length; )
{
string part = input.Substring( i, ( input.Length - i < 100 )? input.Length - i : 100 );
if ( part.Length < 100 )
{
output += "<br>";
output += input.Substring( i ).TrimStart();
break;
}
else
{
int lastSpaceInLine = part.LastIndexOf( ' ' );
if ( i != 0 )
output += "<br>";
output += input.Substring( i, lastSpaceInLine ).TrimStart();
i += lastSpaceInLine;
}
}
好的,现在我有机会检查代码了...
现在它按预期运行...
我正在从 Dynamics CRM 获取数据,一些字段的类型是多行文本。
我只能使用 en.GetAttributeValue<string>("multiline_field_name")
.
我的问题是我在 HTML 标记中呈现所述字符串,并且一些单词中断了。
例如
container div
************************
This is a very long stri
ng. Any help would be ve
ry much appreciated.
************************
我的容器元素只能包含 100 多个字符,所以我想我应该在每 100 个字符处断开字符串。
这是我的代码:
private string SplitOnNewLine(string str)
{
StringBuilder sb = new StringBuilder();
int splitOnIndex = 100;
int cnt = 1;
for(int i = 0; i <str.Length; i++)
{
if(i % splitOnIndex == 0 && i != 0)
{
if(str[i] == ' ')
{
sb.Insert(i, "<br>");
}
else
{
// Go backwards until space is found and append line break
int copied = splitOnIndex * cnt;
if (copied >= str.Length) break;
do
{
copied--;
if(str[copied] == ' ')
{
sb.Insert(copied, "<br>");
break;
}
}while (str[copied] != ' ');
}
cnt++;
}
else
{
sb.Append(str[i]);
}
}
return sb.ToString();
}
它仍然没有按预期工作。 我期待这样的事情:
container div
************************
This is a very long
string. Any help would
be very much
appreciated.
************************
P.S。我也试过使用断字和换行 CSS 规则无济于事。
如何在每 100 个字符后分成两个字符串,反向查找例如' ' 并像您已经做的那样对字符串的第二部分进行递归处理。
string output = "";
for(int i = 0; i < input.Length; )
{
string part = input.Substring( i, ( input.Length - i < 100 )? input.Length - i : 100 );
if ( part.Length < 100 )
{
output += "<br>";
output += input.Substring( i ).TrimStart();
break;
}
else
{
int lastSpaceInLine = part.LastIndexOf( ' ' );
if ( i != 0 )
output += "<br>";
output += input.Substring( i, lastSpaceInLine ).TrimStart();
i += lastSpaceInLine;
}
}
好的,现在我有机会检查代码了... 现在它按预期运行...