对于项目,我需要在用户输入时发送实时短信。要不发送条目中的所有文本,我创建了一个仅发送文本更改的协议。像这样:
初始(旧)文字:Hello
新文本:ello World
协议发送:+[5][ World]-[0][1]
其中+表示添加, - 表示删除,5表示位置5,0表示位置0,1表示删除一个字符。
要在WPF中存档,我写了这个:
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
foreach (var change in e.Changes)
{
if (change.RemovedLength > 0)
{
lcb.Remove((byte)change.Offset, (byte)change.RemovedLength);
}
if (change.AddedLength > 0)
{
var lul = WriteText.Substring(change.Offset, change.AddedLength);
lcb.Add((byte)change.Offset, lul);
}
}
}
在Xamarin中TextChangedEventArgs
只实现.NewTextValue
和.OldTextvalue
,因此使用.Changes
不再适用于此。
是否存在'Hack'或其他东西来获取像WPF中那样被更改的字符,或者我是否必须使用O(ND) Difference Algorithm之类的算法并手动获取更改?