Мы можем разбить строку и сравнить символ за символом и получить первое несоответствие, используя which.min
which.min(strsplit(string1, "")[[1]] == strsplit(string2, "")[[1]])
#[1] 18
Приведенный выше метод возвращает предупреждающее сообщение, когда nchar(string1)
не равно nchar(string2)
Предупреждающее сообщение:
В strsplit (string1, "") [[1]] == strsplit (string2, "") [[1]]:
длинная длина объекта не кратна короткой длине объекта
В большинстве случаев было бы хорошо игнорировать это сообщение, оно все равно дало бы вам правильный ответ.
Однако, чтобы сделать его полным и надежным, мы можем написать функцию
location <- function(string1, string2) {
n = pmin(nchar(string1), nchar(string2))
i = 1
while (i <= n) {
if (substr(string1, i, i) != substr(string2, i, i))
return(i)
i = i + 1
}
cat("There is no difference between two strings")
}
location(string1, string2)
#[1] 18
location("Ronak", "Shah")
#[1] 1
location("Ronak", "Ronak")
#There is no difference between two strings