string originaltext = "A man meet a man";
string spintext ="A {man|Person} meet a {man|male}";
每個原文可以有一些旋轉的選擇,所以每個字開始索引指向旋轉選項字...如何通過索引在c#中動態地映射字符串?
例如:「{|人的人}」 的「人」有spinoption首次出現.. 的「人」第二次數有spinoption「{人|男性}」 ......
如果原文改變,那麼所有字索引改變...... 所以,我想點新的索引...
public Dictionary<int, SpintaxMappedValue> SpintaxListDict
{
get
{
return _spintaxListDict;
}
set
{
_spintaxListDict = value;
}
}
internal static void AlterSpintaxList(string _NeworiginalText)
{
//Build new dictionary for current text
var _NeworiginalTextDict = Regex.Matches(_NeworiginalText, @"\b\w+\b").Cast<Match>().ToDictionary(m => m.Index, m => m.Value);
//Comparing old original value dict with new original value dict
bool dictionariesEqual =
_NeworiginalTextDict.Keys.Count == Init.SpintaxEditorPropertyMain.OriginalTextDict.Keys.Count &&
_NeworiginalTextDict.Keys.All(k => Init.SpintaxEditorPropertyMain.OriginalTextDict.ContainsKey(k) &&
object.Equals(Init.SpintaxEditorPropertyMain.OriginalTextDict[k], _NeworiginalTextDict[k]));
//do mapping if dictionaries are not Equal
if (dictionariesEqual == false)
{
Dictionary<int, SpintaxMappedValue> TempSpintaxDict = new Dictionary<int, SpintaxMappedValue>(Init.SpintaxEditorPropertyMain.SpintaxListDict);
Dictionary<int, SpintaxMappedValue> NewSpintaxListDict = new Dictionary<int, SpintaxMappedValue>();
foreach (KeyValuePair<int, SpintaxMappedValue> olditem in TempSpintaxDict)
{
foreach (KeyValuePair<int, string> newitem in _NeworiginalTextDict)
{
if (olditem.Key != newitem.Key)
{
if (olditem.Value.OriginalWord == newitem.Value)
{
//if (newitem.Key > olditem.Key)
//{
olditem.Value.OriginalWordStartingPosition = newitem.Key;
olditem.Value.SpinWordStartingPosition = newitem.Key;
NewSpintaxListDict.Add(newitem.Key, olditem.Value);
//}
break;
}
}
}
}
Init.SpintaxEditorPropertyMain.SpintaxListDict = new Dictionary<int, SpintaxMappedValue>(NewSpintaxListDict);
}
}
我這是怎麼做的?
這本詞典關鍵是每個詞的索引字符串
在請幫我提前 謝謝!
我認爲你需要編輯你的問題有點。這對我沒有意義。 – Enigmativity
使用stringbuilder而不是字符串... – Maruti
也許我不完全理解你想要做什麼,但是Dictionary似乎是錯誤的結構。你爲什麼不使用數組來存儲單詞?使用Dictionary,每次修改較大的字符串時,基本上都需要重新構建它的一部分或全部。 – hatchet