Мне нужен метод replace(), который мог бы заменить строку с иглой в строке стога сена, нечувствительным к регистру. Мне также нужно, чтобы это было сделано без какого-либо регулярного выражения. Я не мог найти такого метода, поэтому написал свой собственный. Этот вопрос заключается в том, чтобы документировать его, если кто-то еще найдет его полезным в будущем. И если любые улучшения могут быть сделаны (без использования String.replace), не стесняйтесь предлагать их.Нечувствительный к регистру метод replace() в Java (с использованием indexOf)
0
A
ответ
1
public static String replace(String needle, String hayStack, String replacement)
{
String origNeedle = needle;
String origHayStack = hayStack;
needle = origNeedle.toLowerCase();
hayStack = origHayStack.toLowerCase();
int hayStackLen = hayStack.length();
int needleLen = needle.length();
int from = 0;
int to;
String stuffBeforeNeedle;
StringBuilder output = new StringBuilder();
do
{
to = hayStack.indexOf(needle, from);
if (to == -1)
to = hayStackLen;
stuffBeforeNeedle = hayStack.substring(from, to);
output.append(stuffBeforeNeedle);
if (to < hayStackLen)
output.append(replacement);
from = hayStack.indexOf(needle, to) + needleLen;
}
while (to < hayStackLen);
return output.toString();
}
0
public static void main(String[] args) throws IOException, ApplicationException, InterruptedException
{
String output = "";
String haystack = "This is the end. The beautiful EnD. No safety or surprise, the eND. La la la!";
String needle = "eNd";
String replacement = "beginning";
String searchHaystack = haystack.toLowerCase();
String searchNeedle = needle.toLowerCase();
int substringStart = 0;
int beginningOfNeedle = -1;
while(true)
{
// Finds the first needle in the haystack, starting the search just after the last one we found.
// (On the first iteration, we start from the first character).
beginningOfNeedle = searchHaystack.indexOf(searchNeedle, ++beginningOfNeedle);
// If we can't find another needle, we're done.
if(beginningOfNeedle == -1)
break;
// If we found a needle, we add to our output the substring of haystack
// that starts from substringStart and goes right up to the beginning of the needle
// we just found.
output += haystack.substring(substringStart, beginningOfNeedle);
// We also add the replacement text.
output += replacement;
// The next substring will start right at the end of the needle.
substringStart = beginningOfNeedle + needle.length();
}
// We add the last substring (which runs through the end of the haystack)
// to the output.
output += haystack.substring(substringStart);
System.out.println(output);
}
Смежные вопросы
- 1. Нечувствительный к регистру mysql replace
- 2. Нечувствительный к регистру indexOf с grep
- 3. indexOf Чувствительный к регистру?
- 4. Нечувствительный к регистру REPLACE для MySQL
- 5. Нечувствительный к регистру словарь
- 6. Нечувствительный к регистру поиск с использованием Hibernate
- 7. Нечувствительный к регистру автозаполнение поиска (с использованием java, javascript, jquery)
- 8. Нечувствительный к регистру Jaxb2Marshaller
- 9. регистр, нечувствительный к регистру
- 10. Линк нечувствительный к регистру
- 11. Нечувствительный к регистру pandas.concat
- 12. нечувствительный к регистру Pos
- 13. Нечувствительный к регистру поиск
- 14. Нечувствительный к регистру заменитель
- 15. Нечувствительный к регистру список
- 16. регистр, чувствительный к регистру, нечувствительный к регистру
- 17. нечувствительный к регистру в searchlogic
- 18. Java palindrome checker - нечувствительный к регистру
- 19. Нечувствительный к регистру. Для делегатов?
- 20. Нечувствительный к регистру поиск с использованием метода в Python
- 21. Is `history.go` нечувствительный к регистру
- 22. Нечувствительный к регистру словарь с символом C#
- 23. Нечувствительный к регистру текст() сравнение с DOMdocument?
- 24. Yii Rights - нечувствительный к регистру
- 25. Нечувствительный к регистру pandas dataframe.merge
- 26. Solr Нечувствительный к регистру запрос
- 27. XmlSerializer -> нечувствительный к регистру
- 28. Solr Suggestester - нечувствительный к регистру
- 29. Нечувствительный к регистру Сравнение с хорошей проверкой
- 30. Datomic: нечувствительный к регистру запрос
возможно дубликат [Как заменить регистронезависимых буквенные подстроки в Java] (http://stackoverflow.com/questions/5054995/how-to-replace-case-insensitive-literal-substrings -in-java) – Braj
Почему вы не хотите использовать метод 'replace()' и 'repalceAll()'? Есть ли какая-то конкретная причина? – Braj
@Braj Мне нужно, чтобы замена была нечувствительной к регистру, а также я использую google web takeit, который компилирует java-код в javascript. Поэтому регулярные выражения и т. Д. Должны быть совместимы с javascript. Таким образом, нет простого способа избежать входа пользователя, поэтому его можно использовать вместо replaceAll. –