假設有一個字符串:避免在一個字符串遞歸替換
"I'm a boy."
和一些同義詞詞(以鍵值格式):
boy -> "male yong"
yong -> "age under 18"
如果我更換由同義詞詞串一個個,這將是:
步驟1,找到單詞「男孩」,並替換:"I'm a male young."
第2步,找字「young」並替換它:"I'm a male age under 18."
實際上我不需要遞歸替換,我只需要替換原始字符串,換句話說,第2步應該在原始字符串中找到「young」:「我是男孩。而不是「我是男性的年輕人」。有一個簡單的解決方案:
首先替換鍵%s和添加同義詞單詞的列表:
string: "I'm a %s"
list: "male yong"
然後格式字符串列表:
String.format(string, list)
它工作正常,但愚蠢的,慢,任何人有更明確的解決方案?
我不確定您的實際任務是什麼,但如果您需要排除之前任何轉換的結果,那麼請控制**搜索/替換的**起點**。 – 2013-05-06 02:02:31
如果您可以清楚地識別哪些同義詞值包含其他同義詞,那麼您可以想象一個「圖」結構,其中不會評估爲其他同義詞的所有同義詞先被替換,然後是他們的「父母」等,直到您安全評估所有同義詞。不過,如果有圖表,那麼你的運氣不好。 – Patashu 2013-05-06 02:03:15
同義詞可以是任意字符串,也可以是單個單詞(例如,鍵中沒有空格)?如果是後者,那麼你可以在空白處「拆分」字符串,並且對於拆分中的每個字符串嘗試同義詞,如果你找不到或者應用了一個,就繼續前進。這樣,任何單詞都不會被遞歸地同義詞。 – Patashu 2013-05-06 02:06:03