fix: 输入校验忽略多个连续空格与大小写;统一中英文引号与空白规范化
This commit is contained in:
@@ -21,10 +21,20 @@ List<VocabularyItem> get courseLexiconEntries {
|
||||
|
||||
/// Finds a course item by exact query, then by the longest known phrase in it.
|
||||
VocabularyItem? findCourseLexicon(String text) {
|
||||
final normalized = text.toLowerCase().replaceAll('’', "'").trim();
|
||||
final normalized = text
|
||||
.toLowerCase()
|
||||
.replaceAll('’', "'")
|
||||
.replaceAll('‘', "'")
|
||||
.replaceAll(RegExp(r'\s+'), ' ')
|
||||
.trim();
|
||||
if (normalized.isEmpty) return null;
|
||||
return courseLexiconEntries.cast<VocabularyItem?>().firstWhere((entry) {
|
||||
final word = entry!.word.toLowerCase().replaceAll('’', "'");
|
||||
final word = entry!.word
|
||||
.toLowerCase()
|
||||
.replaceAll('’', "'")
|
||||
.replaceAll('‘', "'")
|
||||
.replaceAll(RegExp(r'\s+'), ' ')
|
||||
.trim();
|
||||
if (normalized == word) return true;
|
||||
final pattern = RegExp(
|
||||
r'(?<![a-zA-Z0-9])' + RegExp.escape(word) + r'(?![a-zA-Z0-9])',
|
||||
@@ -36,12 +46,22 @@ VocabularyItem? findCourseLexicon(String text) {
|
||||
|
||||
/// Extracts all distinct course lexicon phrases/words that appear within [text].
|
||||
List<VocabularyItem> extractCourseLexiconPhrases(String text) {
|
||||
final normalized = text.toLowerCase().replaceAll('’', "'").trim();
|
||||
final normalized = text
|
||||
.toLowerCase()
|
||||
.replaceAll('’', "'")
|
||||
.replaceAll('‘', "'")
|
||||
.replaceAll(RegExp(r'\s+'), ' ')
|
||||
.trim();
|
||||
if (normalized.isEmpty) return const [];
|
||||
final matched = <VocabularyItem>[];
|
||||
final seen = <String>{};
|
||||
for (final item in courseLexiconEntries) {
|
||||
final word = item.word.toLowerCase().replaceAll('’', "'");
|
||||
final word = item.word
|
||||
.toLowerCase()
|
||||
.replaceAll('’', "'")
|
||||
.replaceAll('‘', "'")
|
||||
.replaceAll(RegExp(r'\s+'), ' ')
|
||||
.trim();
|
||||
if (word.isEmpty || word == normalized) continue;
|
||||
final pattern = RegExp(
|
||||
r'(?<![a-zA-Z0-9])' + RegExp.escape(word) + r'(?![a-zA-Z0-9])',
|
||||
|
||||
Reference in New Issue
Block a user