Доброго времени суток!
у меня задача разбить текст на массив состоящий из элементов разной величины, а именно если сочетание слов присутствует в одном из уже написанных массивов, то формируется именно словосочетание, а если же такого нет, то в данном случае элемент массива равен одному слову.
у меня есть фраза “ночная тишина окружала замок из камня и только каменная плита издавала гул”
ее мне нужно разбить на отдельные элементы, однако они формируются не по одному слову: если словосочетание из этой фразы присутствует в массиве, то элемент = этому словосочетанию, если же нет, то это одиночный элемент.
получается что из этой фразы “ночная тишина окружала замок из камня и только каменная плита издавала гул” я должен получить массив как в примере
Держи, написал на онлайн песочнице, так как сейчас под рукой мака нет
let dualWords = ["ночная тишина","каменный замок", "каменная плита","тишина ночи","замок из камня","плита из камня"]
var text = "ночная тишина окружала замок из камня и только каменная плита издавала гул"
var findDualWordsArray = [String]()
for dualWord in dualWords{
if let rangeFindDualWord = text.range(of:dualWord){
//Если находим словосочетания, то заносим их в массив, и удаляем из текста
findDualWordsArray.append(dualWord)
text.removeSubrange(rangeFindDualWord)
}
}
let resultArrayLastWord = text.components(separatedBy: " ")
let result = resultArrayLastWord + findDualWordsArray
print(result)
Спасибо большое!
пол дня с этим сидел.
массивы отличается битом, в одном случае словосочетание это 1, в другом 0, это нужно для стеганографии, но я могу без проблем создать 3тий массив, а для самой программы использовать эти два. еще раз спасибо, очень помогли!
возник еще один вопрос.
алгоритм работает как надо, однако результат имеет другой порядок слов, каким образом я могу сохранить порядок слов в предложении?