我有一个程序需要将任何给定的字符串与预定义的字符串进行比较,并确定是否发生了插入错误,删除错误,转置或替换错误。
例如,如果向用户显示 dog 一词并且用户提交狗或 doge ,则应通知用户插入错误已经完成。
我该怎么做?
答案 0 :(得分:0)
您可能需要为每个错误类型编写一个方法,以查看它是否是错误,如:
bool IsInsertionError(string expected, string actual) {
// Maybe look at all of the chars in expected, to see if all of them
// are there in actual, in the correct order, but there's an additional one
}
bool IsDeletionError(string expected, string actual) {
// Do the reverse of IsInsertionError - see if all the letters
// of actual are in expected, in the correct order,
// but there's an additional one
}
bool IsTransposition(string expected, string actual) {
// This one might be a little tricker - maybe loop through all the chars,
// and if expected[i] != actual[i], check to see if
// expected[i+1] = actual[i] and actual[i-1]=expected[i]
// or something like that
}
一旦你构建了所有单独的规则,并且首先检查正常的相等,一次一个地解雇它们。
你必须将这样的问题分解成小组件,然后一旦遇到一堆简单的问题,一次解决一个问题。
答案 1 :(得分:0)
脱离我的头脑,但我认为这应该让你开始:
Insertion
和Deletion
应该非常简单;只需检查字符串的长度。
if(originalString.Length > newString.Length)
{
//deletion
}
else if(originalString.Length < newString.Length)
{
//insertion
}
要检测transposition
,请检查长度是否匹配,如果匹配,则可以从两个字符串中创建两个List<char>
。然后使用下面的表达式检查它们是否匹配
bool isTransposed = originalList.OrderBy(x => x).SequenceEquals(newList.OrderBy(y => y));
要检测substitution
,您可以使用Hamming Distance并检查它是否大于0.
答案 2 :(得分:-1)
我建议您创建一个function
,parameter
作为input sting
。 function
看起来或多或少会像这样。然后在任意位置使用function
。
private void CheckString(string userString)
{
string predefinedString = "dog";
if (userString == predefinedString)
{
// write your logic here
}
else
{
MessageBox.Show("Incorrect word"); // notify the users about incorrect word over here
}
}