2009-06-05 23 views
0

Meine Frage hat zwei Teile:Suche einen Satz in einem String (C#)

1) Wie kann ich für einen Satz zu suchen (zB Dell Canada) in einem String (zB I am working in Dell Canada, und ich fand es .. .).

2) Der zweite Teil ist meine Zeichenfolge ist Text in einer RichTextBox, also möchte ich die TextRange des ausgewählten Satzes finden und bestimmte Dekoration anwenden.

danke.

+3

Ich denke, Sie haben das rückwärts: Sie suchen nach einer Zeichenfolge innerhalb eines Satzes. –

+0

Ich verstehe was du meinst. Mein Punkt war mehr Suche nach einer Zeichenfolge, die durch Leerzeichen getrennte Wörter wie "Dell Kanada" in der Zeichenfolge "Ich arbeite in Dell Kanada" enthält. –

Antwort

0

Der erste Teil ist ziemlich einfach, wie CK hingewiesen hat. Rich-Text-Formatierung wird von bestimmten vordefinierten Codes vorgegeben, die in der RTF-Spezifikation definiert sind. Holen Sie zuerst die zugrunde liegende RTF-Rohzeichenfolge aus dem Steuerelement mithilfe der RTF-Eigenschaft

Zeichenfolge rawString = richTextBox.Rtf;

Für zB: das rtf für den Ausdruck 'Hallo Bobby' wird so aussehen. Es ist etwas wie HTML, Sie haben Tags, die die Formatierung definieren.

"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs17 hello Bobby\\par\r\n\\par\r\n}\r\n" 

Jetzt nehme ich an die Worte fett machen wollen, würde ich die Rtf-Eigenschaft durch die Zeichenfolge mit

"{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n\\viewkind4\\uc1\\pard\\f0\\fs17 
\\b hello Bobby\\par\r\n\\par\r\n}\r\n" 

Hinweis die \\ b vor dem Ausdruck zu ersetzen. Das ist der Code, um einen gegebenen Text fett zu machen.

Um diese Formatierung mithilfe von Code durchzuführen, suchen Sie die zu formatierende Zeichenfolge (mit der ersten Technik) und fügen Sie den RTF-Code an der erforderlichen Position ein. Hoffe, das hilft.

Für die Codes beziehen sich MSDN http://msdn.microsoft.com/en-us/library/aa140277.aspx

PS: Jeffs Version der leicht ist. Diese Version gibt dir unendliche Kontrolle. Wenn Sie etwas in WordPad tun können, können Sie das gleiche mit RTF-Codes tun.

+0

Hallo, Wie kann ich meinen RTF-Code in die einfügen erforderliche Position? Ich denke, ich habe nicht erwähnt, dass ich System.Windows.Control.RichTextBox in WPF verwende. –

+0

Ich denke nicht, dass es wichtig ist, dass Sie WPF verwenden. Die Eigenschaft sollte verfügbar sein. Nun, Sie erhalten die Position des Textes, den Sie ändern möchten und führen Sie eine InsertAt() oder Sie können die RTF-Zeichenfolge dynamisch erstellen und zuweisen Sie die Rtf-Eigenschaft. – bobbyalex

1

Teil 1:

if (myString.IndexOf("Dell Canada") > -1) 
{ 
    // do something great; 
} 
1

Teil 1.

bool cntns = "I am working in Dell Canada, and found it ...".Contains("Dell Canada") 
5

Geben Sie diesen einen Wirbel, wird es zu fett eingestellt. Es gibt viele Auswahl ... Eigenschaften auf der RichTextBox, die Sie verwenden können, beachten Sie auch, dass es ein Groß- und Kleinschreibung Suche ist:

string textToSearchFor = "Dell Canada"; 
    int index = richTextBox1.Text.IndexOf(textToSearchFor, StringComparison.OrdinalIgnoreCase); 
    if (index >= 0) 
    { 
     richTextBox1.Select(index, textToSearchFor.Length); 
     richTextBox1.SelectionFont = new Font("Arial", 12f, FontStyle.Bold); 
    } 
    else 
    { 
     // not found 
    } 
+0

Danke Jeff für die schnelle Antwort. Obwohl ich RichTextBox in Windows.Control und nicht Windows.Form meinte. Ich verwende dieses Steuerelement in WPF. Daher gibt es keine RichTextBox1.Select (index, textToSearchFor.Length); darin, aber ich habe dein Konzept, und ich muss nur nach einem Weg suchen, um diesen Bereich zu bekommen. Link: http://msdn.microsoft.com/en-us/library/system.windows.controls.richttextbox.aspx –

+0

Hilft Ihnen dieser Artikel? : http://shevaspace.blogspot.com/2007/11/how-to-search-text-in-wpf-flowdocument.html So wenden Sie eine Formatierung auf ein TextRange an: myTextRange.ApplyPropertyValue (TextElement.FontWeightProperty, FontWeights.Bold); – jjxtra

+0

Diese URL hat, was Sie suchen, wenn Sie nicht RTF-Codes verwenden möchten: http://www.cnblogs.com/Files/sheva/SyntaxHighlightingDemo.zip – jjxtra

Verwandte Themen