2016-01-17 23 views
1

我正在嘗試製作一個搜索代碼,以便您可以在兩個方向(右側和左側)中查找文本。我已經創建了一個代碼,可以在右側搜索文本,而不是在左側。如何在richtextbox中查找文本反向?

的什麼,我試圖做

例子:

例題一例題示例3範例4

可以說,我發現「示例3」(將正確的),現在我需要找到例題(走向左側)我將如何製作該代碼?

問題: 如何使搜索文本的代碼向左(反向)?

這裏是什麼,我已經試過搜索文本向左做了一個例子:

try 
{ 
    richTextBox1.Focus(); 
    richTextBox1.Find(findwhat, findPos, RichTextBoxFinds.Reverse); 
    richTextBox1.Select(findPos, findwhat.Length); 
    findPos += findwhat.Length; 
} 
catch 
{ 
    findPos = 0; 
} 
+0

所以你想從文本的末尾搜索?你能解釋一下你的意思嗎?另外,你現在的代碼有什麼問題?它拋出異常嗎? –

+0

您可以先倒轉文本,然後搜索它;-) –

+0

可以說我找到了'example3',現在我需要找到example2。往左走。我將如何製作該代碼? 示例1示例2示例3示例4 –

回答

0

一個簡單的方法是向後迭代,並檢查當前的字符串包含給定字符串:

public static class Extension{ 
    public static bool ReverseContains(this string container, string token) 
    { 
     if (string.IsNullOrEmpty (container) || string.IsNullOrEmpty (token)) 
     { 
      return false;  
     } 
     int offset = container.Length - token.Length; 
     string start = container.Substring (offset); 
     for (int i = offset - 1; i >= 0; i--) 
     { 
      start = container[i] + start; 
      if(start.Contains(token)){ return true;} 
     } 
     return false; 
    } 
} 

如果容器包含令牌,則返回true。搜索將從最後開始。

它不考慮大寫/小寫,因此在「一堆單詞」中不會找到「單詞」。如果需要,您必須添加一個額外的參數以使其全部小寫。

string str = "My string with many words to be found"; 
string wordToFind = "words"; 

bool result = str.ReverseContains(wordToFind); 
+0

請您解釋如何使用它,以便我可以從右向左找到文本。謝謝 –