簡體   English   中英

如何檢查字符串中的重復字符

[英]How to check the repeated characters in a string

我正在創建一個程序,用於過濾和檢查單詞是否存在於字典中。 問題是如何知道單詞是否包含重復字符。

例如:

string string1 = "sorrrrrrry";

該字符串在字典中不存在,但是如果您刪除重復的r,將是“抱歉”。

我正在使用hunspell檢查字典中是否存在該單詞。 有什么解決辦法嗎? 提前致謝

對於您的情況,您可以做的是:

  • 替換重復的字符,但是2 =>“ 對不起
  • 看單詞在字典上是否存在
  • 如果不是,請用1個字符=>“ sory ”替換2個重復的字符(例如,如果有“ caat ”)
  • 看單詞在字典上是否存在

使用正則表達式(\\w)\\1+ (匹配重復字符)和替換第一時間由$1$1 (2反復匹配的字符)和由$1

string input = "sorrrrrrry";
Regex regex = new Regex(@"(\w)\1+");

string replacement = "$1$1";
string res = regex.Replace(input, replacement);
Console.WriteLine(res);
//will output => sorry

replacement = "$1";
res = regex.Replace(input, replacement);
Console.WriteLine(res);
//will output => sory

警告這可能會產生一些結果, 但是它有一些局限性,並且可能會產生意外的結果:

  • 如果重復兩個以上的字符,則需要處理所有組合:如果您有“ soooorrrry ”,它將得到1.“ soorry ”,然后是2.“ sory ”,因此該算法將不起作用
  • 與“ gooood”案有什么關系,是“ good”還是“ god”?

您只能嘗試通過幾種模糊邏輯方法來猜測哪個單詞是哪個單詞,該單詞可以匹配詞典中的某些單詞,如果找到多個單詞,則顯示一個列表。

也許您知道,智能手機鍵盤如何嘗試為您提供幫助。

這種方式或多或少是不正確的方式(在鍵入過程中)。

但是之后也是可能的,但是需要更多的努力。

您可能需要研究將字典存儲在Lucene.Net中,並使用其寬松的匹配功能來匹配單詞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM