Я не думаю, что есть встроенная функция для обрезки на основе переданной строки. Вот небольшой пример того, как это сделать. Это, вероятно, не самое эффективное решение, но оно, вероятно, достаточно быстрое для большинства ситуаций, оценивает и адаптируется к вашим потребностям. Я рекомендую тестировать производительность и оптимизировать при необходимости любой фрагмент кода, который будет использоваться регулярно. Ниже я привел некоторую информацию о времени в качестве примера.
public String trim( String stringToTrim, String stringToRemove )
{
String answer = stringToTrim;
while( answer.startsWith( stringToRemove ) )
{
answer = answer.substring( stringToRemove.length() );
}
while( answer.endsWith( stringToRemove ) )
{
answer = answer.substring( 0, answer.length() - stringToRemove.length() );
}
return answer;
}
В этом ответе предполагается, что обрезаемые символы являются строкой. Например, передача в «abc» обрежет «abc», но не «bbc» или «cba» и т. Д.
Некоторое время производительности для выполнения каждого из следующих 10 миллионов раз.
" mile ".trim();
выполняется за 248 мс , включенных в качестве эталонной реализации для сравнения производительности.
trim( "smiles", "s" );
работает за 547 мс - примерно в 2 раза дольше, чем метод java String.trim()
.
"smiles".replaceAll("s$|^s","");
выполняется за 12 306 мс - примерно в 48 раз больше, чем метод String.trim()
в Java.
И с использованием скомпилированного шаблона регулярных выражений Pattern pattern = Pattern.compile("s$|^s");
pattern.matcher("smiles").replaceAll("");
выполняется за 7 804 мс - примерно в 31 раз больше, чем метод String.trim()
в Java.