Я учусь на первом семестре в программировании и полностью застрял на этом.
Я хочу, чтобы все формы слова (например: Привет, привет, привет, ...) были преобразованы в нижний регистр, и я не знаю, как это сделать, не записывая условие для каждого варианта в моем файле. У меня есть много слов, которые мне нужно преобразовать в нижний или верхний регистр, поэтому я понял, что должен быть лучший способ сделать это, но не могу понять, какой.
Есть ли способ получить все эти варианты сразу и преобразовать их в нижний регистр?
Input = "Привет, это моя программа под названием HELLO"
Вывод = "привет, это моя программа под названием привет"
Я только пробовал:
word.replace("ПРИВЕТ", "привет");
word.replace("Привет", "привет"); и так далее..
word.toLowerCase()
или наоборот
word.toUpperCase()
Надеюсь, это поможет!
разве это не возьмет всю строку и не преобразует ее в нижний/верхний регистр? Мне нужно только это конкретное слово во всех формах заглавных букв для преобразования без изменения других слов в строке
Я изменю свой ответ, чтобы показать вам, как вы можете это сделать, у вас есть пример некоторых слов?
Я изучаю кодирование на французском языке, поэтому пытаться найти примеры довольно сложно, лол.. Ввод в моем исходном посте, я бы хотел, чтобы HeLlo и HELLO были в нижнем регистре, но в моем файле было бы МНОЖЕСТВО вариаций это слово (привет, привет, ...), поэтому я хотел бы, чтобы все они были строчными без необходимости делать их один за другим, если это возможно
Я добавил новый ответ, надеюсь, объясняющий вам :)
При условии, что ваш входной текст является значением «текст» (вы можете сделать имена переменных любыми, какими хотите), он должен выводить правильную строку. Вы можете добавить слова, которые хотите изменить, на строчные и прописные (убедитесь, что при их добавлении они написаны строчными буквами)
String text = "Hello I am No GoodBYE";
String[] lowercase = {"hello", "goodbye"};
String[] uppercase = {"no", "yes"};
String[] split_string = text.split(" ");
for (int i=0;i < split_string.length;i++){
for (String low:lowercase){
if (split_string[i].toLowerCase().equals(low)){
split_string[i] = split_string[i].toLowerCase();
}
}
for (String upper:uppercase){
if (split_string[i].toLowerCase().equals(upper)){
split_string[i] = split_string[i].toUpperCase();
}
}
}
String final_result = "";
for(String word:split_string){
final_result = final_result + " " + word;
}
System.out.println(final_result);
Я пробовал, и это сработало! Хотя я боюсь, что не смогу его использовать, поскольку мы не изучили некоторые части кода, который вы написали, поэтому мой учитель может не принять его, я использовал регулярное выражение, рекомендованное другим пользователем, большое спасибо за ваш помощь :) !
Для регулярного выражения:
word = word.replaceAll("(?i)hello", "hello");
Это замена "без учета регистра"; т. е. все экземпляры «привет» независимо от регистра (привет, привет, привет и т. д.) будут заменены на «привет».
Я нашел эту статью особенно полезной при изучении регулярных выражений. Вот живой рабочий пример.
Вы можете использовать java.util.regex.Pattern с параметром CASE_INSENSITIVE:
Pattern pattern = Pattern.compile(Pattern.quote("hallo"), Pattern.CASE_INSENSITIVE);
String test = "Hallo FoO HallO BaR HaLLo BAz";
String replaced = pattern.matcher(test).replaceAll("hallo");
// Output: hallo FoO hallo BaR hallo BAz
Идея:
HeLlo There heLLO WorlD
-> hello there hello world
"hello"
-> [0, 12]
hello There hello WorlD
псевдо
String toLower(String input, String replacement) {
indices = input.toLower().allIndecesOf(replacement)
result = input.clone()
for i in indices {
result = result.replace( i, replacement )
}
return result
}
Примечание. Если вы хотите изменить определенные слова как часть строки, вам придется перебирать каждое слово во введенной строке.