我正在開發一個英語詞匯學習應用程式。給用戶的一些練習是書面測驗。他們必須將法語單詞翻譯成英語單詞,反之亦然。
為了使檢查比“1”或“0”(TypedWord == expectedWord)更復雜一些,我一直在處理字串之間的相似性,并且效果很好(例如拼寫錯誤)。
我添加也使用了 contains 函式,例如,如果用戶在預期單詞前面添加了一篇文章,它不會認為它錯了。(例如:Ecole(預計學校),但用戶寫“A school”)。
所以我檢查了諸如“if (typedWord.contains(word)==true) then...”之類的行。它適用于文章問題。但它提示另一個問題:
例如:樹枝 --> 預期的法語單詞是“branch”。如果用戶鍵入“une branche”,它認為它是正確的,這很好。但是如果用戶鍵入“débrancher”(拔掉插頭),它認為它是正確的,并且“branche”這個詞是“débrancher”的一部分......
我怎樣才能防止這種情況發生?知道其他方法嗎?
我閱讀了三個非常有趣的建議答案。問題是有些詞是復合詞......“例如:廚房用具,園藝工具”等......所以我認為“空間”功能可能有問題......
uj5u.com熱心網友回復:
在這種情況下,用“空格”分隔整個答案,然后將其與正確的單詞進行比較。
For an example:
User's answer: That is my school
Separate it with space, so that you will find an array of words:
that, is, my, school.
然后將每個單詞與您的單詞進行比較。它會給你正確的答案。
顫振代碼如下:
usersAnswer?.split(" ").forEach((word){
if(word == correctAnswer)
print("this is a correct answer");
});
uj5u.com熱心網友回復:
您可以檢查正確單詞之前和之后的空格:類似于if (typedWord.contains(' ' word ' ')==true) then...,以便將“débrancher”標記為錯誤。不過,這有點嚴格:如果句子必須用一些標點符號完成,則該檢查將拒絕該句子。您可能需要一些允許標點符號但不允許空格的 RegExp。
uj5u.com熱心網友回復:
您可以按空格分割字串并檢查結果陣列是否包含您要查找的單詞。
typedWord.split(' ').contains('debranche');
所以 if typedWordis 'une branche thesplit(' ') 會把它變成這個陣列:['une', 'branche']。現在,當您檢查此陣列contains('branche')是否存在時,它將檢查是否存在確切的字串分支,在這種情況下它確實存在并回傳 true。
但是,如果它是 'une debranche',則結果陣列將是:['une', 'debranche']并且因為該陣列沒有等于 'branch' 的值,它將回傳 false。請記住,當您使用split它將字串轉換為陣列并通過contains在陣列上使用時,它會檢查是否contains存在與您提供的值完全相同的項,而在字串中它會檢查該字串的一部分是否與給定值匹配或不。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/409968.html
標籤:
