感谢您的帮助!!!! 我的主题将在此停止......
答案 0 :(得分:0)
如果RTF
是格式化字符串,这可能会为您提供帮助。
RichTextBox1.SelectAll();
string[] textArray = RichTextBox1.SelectedText.Split(new char[] { '\n', '\t' });
foreach(string strText in textArray)
{
if(!string.IsNullOrEmpty(strText) && strText != "rtf")
RichTextBox1.Rtf = RichTextBox1.Rtf.Replace(strText, strText.ToUpper());
}
RichTextBox.Rtf
将包含类似此{\rtf1\fbidis\ansi\ansicpg1252\deff0\deflang17417{\fonttbl{\f0\fswiss\fprq2\fcharset0 Calibri;}{\f1\fnil\fcharset0 Microsoft Sans Serif;}} \viewkind4\uc1\trowd\trgaph108\trleft5\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \clbrdrt\brdrw15\brdrs\clbrdrl\brdrw15\brdrs\clbrdrb\brdrw15\brdrs\clbrdrr\brdrw15\brdrs
的数据...当我们尝试对此类字符串执行操作时,它将抛出错误,文件格式无效但要从此问题中保存,我们可以使用RichTextBox的SelectedText
或Text
,其中我们只获取RichTextBox的内部文本。然后我们可以用Upper Text替换文本。
将Unicode字符串更改为大写后的要求。 RTF会将tôi tên là
更改为此类\cf1\f1\fs20 t\'f4i t\'ean l\'e0
,当我们在Replace(strText, strText.ToUpper());
中找不到行tôi tên là
的代码RichTextBox1.Rtf
时,我使用了如果条件是查看字符串是否存在于rtf中,如果是,那么普通代码将起作用但是如果unicode字符串存在则将其更改为rtf以查看unicode字符串的rtf版本是什么。
另一个Stephan Bauer
正确地建议如果r
或rtf
或t
,f
,rt
,tf
在线上存在比发生改变案例的错误。所以也添加了这个功能。
string somevar = "rtf"; //string to eliminate
List<string> subStrings = new List<string>();
for(int i = 0; i < somevar.Length; i++)
{
subStrings.AddRange(GetAllSubStrings(somevar, i + 1));
}
RichTextBox1.Rtf = RichTextBox1.Rtf.ToLower();
string[] textArray = RichTextBox1.Text.Split(new char[] { '\n', '\t' });
foreach(string strText in textArray)
{
if(!string.IsNullOrEmpty(strText))
if(!subStrings.Any(x => strText == x))
{
if(RichTextBox1.Rtf.Contains(strText))
{
RichTextBox1.Rtf = RichTextBox1.Rtf.Replace(strText, strText.ToUpperInvariant());
}
else
{
RichTextBox rt = new RichTextBox();
rt.Text = strText;
string rtftext = rt.Rtf.Substring(rt.Rtf.IndexOf("fs17") + 4);
rtftext = rtftext.Substring(0, rtftext.IndexOf("par")-1);
RichTextBox1.Rtf = RichTextBox1.Rtf.Replace(rtftext, strText.ToUpperInvariant());
}
}
}
这就是我们如何在rtf
public static IEnumerable<string> GetAllSubStrings(string input, int length)
{
for(var i = 0; i < input.Length - length + 1; i++)
{
yield return input.Substring(i, length);
}
}
答案 1 :(得分:0)
正如Mohit建议的那样:
private void button1_Click(object sender, EventArgs e)
{
richTextBox1.Text = richTextBox1.Text.ToUpper();
}
答案 2 :(得分:0)
您无法直接将文本值设置为"Rtf"
属性。
检查Rtf
属性时,调试值类似于
"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs17\\par\r\n}\r\n"
请按照以下链接获取有关使用Rtf
的更多信息。
http://www.codeproject.com/KB/cs/RTFSyntaxColour.aspx
您最快的选择是使用RichTextBox的纯文本:
RichTextBox.Text = RichTextBox.Text.ToUpper();
答案 3 :(得分:0)
由于Rft.ToUpper()
代码
RTF
收到错误的原因
区分大小写
作为例子
string rft = {\\rtf1\\ansi\\deff0\r\n{\\colortbl;\\red0\\green0\\blue0;\\red255\\green0\\blue0;}\r\nThis is text}
它会在This is text
时返回richTextBox1.Rtf = rft;
,因为您可以看到格式位于lowercase
中,因此当您应用Rft.ToLower()
时,它不会产生影响,但是当您应用Rft.ToUpper()
时1}}它的dosnt遵循RFT
代码格式,因此它给出了错误
文件格式无效
因此,如果您想text
richbox
UpperCase
使用<{p}}
richTextBox1.Text = richTextBox1.Text.ToUpper();