如何使用自定义字符创建自定义自动换行。即。我想使用.(dot)
字符而不是space来包装文本。
我正在使用c#WinForm在richTextBox上进行自动换行项目,因此我需要一起使用(anyword +'་')进行wordwrapping,然后创建下一个新行,因为我的问题是在每个自动换行之后'་'即将开始/开始新行,如下例所示,'་'应该来到每个结束行
假设我已经给出了原始字符串: རྒྱ་གར་ཚོང་པའི་ལྷན་ཚོགས་དངོས་སུ 一旦我使用了wordwrap概念,它就像这样 རྒྱ་རྒྱ་གར་ཚོང་//我们假设这是第一行
་ལྷན་ཚོགས་དངོས་སུ//this is second line and second line start with '་' so ending line should stay (anyword+'་') before break the line and it should happen for linewise.
所以为了避免这个问题,我想到了"跟随角色"的概念。经过如此多的谷歌搜索和浏览,我发现以下线程,我在寻找什么,但遗憾的是他们正在使用不同的工具和平台。我尝试了很多使用这些概念并使用C#(WinForm)实现我的项目,但无法工作。因此,请与我分享您的主题并帮助我使用c#(WinForm)完成我的项目。你的帮助意味着我很多。
https://www.youtube.com/watch?v=uTajI2lWwgE
http://www.c-sharpcorner.com/UploadFile/72d20e/canvas-text-wrapping-using-html-5/
谢谢!
答案 0 :(得分:1)
如果您希望在每.
后添加新行,则需要将anyword. anyword
替换为anyword.\r\nanyword
\r\n
,其中M.\r\nB.\r\nB.\r\nS.\r\n
是新行的序列。但是,如果你写M.B.B.S,它可能会产生一些问题。然后它可能像string str = "This is the simple text. Hello world".Replace(". ", ".\r\n");
。
This is the simple text.
Hello world.
输出:
int tmpIndex = 0;
int startIndex = 0;
int lastIndex = 0;
string sChar = ".";
string strText = richTextBox1.Text;
Graphics g = this.CreateGraphics();
StringBuilder sb = new StringBuilder();
while (tmpIndex > -1)
{
lastIndex = tmpIndex;
tmpIndex = strText.IndexOf(sChar, tmpIndex + 1);
if (tmpIndex < 0)
tmpIndex = strText.Length - 1;
if (g.MeasureString(strText.Substring(startIndex, tmpIndex - startIndex), richTextBox1.Font).Width > richTextBox1.Width || tmpIndex == (strText.Length-1))
{
sb.AppendLine(strText.Substring(startIndex, lastIndex - startIndex));
startIndex = lastIndex;
if (tmpIndex == (strText.Length - 1))
break;
tmpIndex = lastIndex;
}
}
richTextBox1.Text = sb.ToString();
<强>编辑:强>
{{1}}