import com.sun.deploy.util.StringUtils;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class FrenchTranslator {
private static final String EMPTY_SPACE = " ";
private static final Map<String, Integer> frenchNumbers = new HashMap<String, Integer>() {{
put("un", 1);
put("deux", 2);
put("trois", 3);
put("quatre", 4);
put("cinq", 5);
}};
public static void main(String[] args) {
String frenchSentence = "J'ai cinq tomates.";
System.out.println("INPUT: " + frenchSentence);
List <String> words = extractWordsFromFrenchSentence(frenchSentence);
String translatedSentence = createTranslatedSentence(words);
System.out.println("OUTPUT:" + translatedSentence);
}
private static List <String> extractWordsFromFrenchSentence(String frenchSentence){
return Arrays.asList(StringUtils.splitString(frenchSentence, EMPTY_SPACE));
}
private static String createTranslatedSentence( List <String> words){
StringBuilder translatedSentence = new StringBuilder();
words.forEach(word -> {
if(frenchNumbers.containsKey(word)){
translatedSentence.append(EMPTY_SPACE + frenchNumbers.get(word));
}
else {
translatedSentence.append(EMPTY_SPACE + word);
}
});
return translatedSentence.toString();
}
}
Как работает алгоритм:
INPUT: J'ai cinq tomates.
РЕЗУЛЬТАТ: J'ai 5 томатов
Из того, что я понял, вы хотите обнаружить письменное число во французском предложении.
Я не знаю ваших точных требований, но чтобы помочь вам, я написал алгоритм, который переводит написанные французские числа (от 1-5) в натуральные числа, а затем воссоздает исходное предложение.