полного осуществления ОРИГИНАЛА str_pad
Благодаря theINtoy пользователя ответ, и я думаю, что это было бы хорошо один (еще не тестировался),
, но я закончил реализацию полной функции str_pad php в Java langua ge, потому что все ответы, которые я нашел, имеют частичные функциональные возможности, и мне нужно больше контролировать строку, например str_pad php.
/**************************
*
* STR_PAD IMPLEMENTED
*
**************************/
public String str_pad(String input, int length, String pad, String sense)
{
int resto_pad = length - input.length();
String padded = "";
if (resto_pad <= 0){ return input; }
if(sense.equals("STR_PAD_RIGHT"))
{
padded = input;
padded += _fill_string(pad,resto_pad);
}
else if(sense.equals("STR_PAD_LEFT"))
{
padded = _fill_string(pad, resto_pad);
padded += input;
}
else // STR_PAD_BOTH
{
int pad_left = (int) Math.ceil(resto_pad/2);
int pad_right = resto_pad - pad_left;
padded = _fill_string(pad, pad_left);
padded += input;
padded += _fill_string(pad, pad_right);
}
return padded;
}
protected String _fill_string(String pad, int resto)
{
boolean first = true;
String padded = "";
if (resto >= pad.length())
{
for (int i = resto; i >= 0; i = i - pad.length())
{
if (i >= pad.length())
{
if (first){ padded = pad; } else { padded += pad; }
}
else
{
if (first){ padded = pad.substring(0, i); } else { padded += pad.substring(0, i); }
}
first = false;
}
}
else
{
padded = pad.substring(0,resto);
}
return padded;
}
ПРИМЕНЕНИЕ - Все возможные случаи тестирования
============================
System.out.println(str_pad("coca cola 100", 10, "-", "STR_PAD_RIGHT"));
System.out.println(str_pad("coca cola", 10, "-", "STR_PAD_RIGHT"));
System.out.println(str_pad("cocacola", 10, "-", "STR_PAD_RIGHT"));
System.out.println(str_pad("cocacola", 10, "-", "STR_PAD_LEFT"));
System.out.println(str_pad("cocacola", 10, "-", "STR_PAD_BOTH"));
System.out.println(str_pad("cocacola", 15, "##", "STR_PAD_RIGHT"));
System.out.println(str_pad("cocacola", 15, "##", "STR_PAD_LEFT"));
System.out.println(str_pad("cocacola", 15, "##", "STR_PAD_BOTH"));
System.out.println(str_pad("cocacola", 15, "&&&", "STR_PAD_RIGHT"));
System.out.println(str_pad("cocacola", 15, "&&&", "STR_PAD_LEFT"));
System.out.println(str_pad("cocacola", 15, "&&&", "STR_PAD_BOTH"));
System.out.println(str_pad("cocacola", 20, "***", "STR_PAD_BOTH"));
System.out.println(str_pad("cocacola", 20, "*-*", "STR_PAD_BOTH"));
System.out.println(str_pad("cocacola_light_taste_is_not_like_original", 20, ":::", "STR_PAD_BOTH"));
Первая и последняя Println будет печатать все символы, как сделать оригинальную функцию PHP str_pad
Выход:
System.out: coca cola 100
System.out: coca cola-
System.out: cocacola--
System.out: --cocacola
System.out: -cocacola-
System.out: cocacola#######
System.out: #######cocacola
System.out: ###cocacola####
System.out: cocacola&&&&&&&
System.out: &&&&&&&cocacola
System.out: &&&cocacola&&&&
System.out: ******cocacola******
System.out: *-**-*cocacola*-**-*
System.out: cocacola_light_taste_is_not_like_original
Если кто-то найти какой-нибудь хороший тест или улучшение, Вы можете редактировать этот ответ для лучшего кода ...
Хотя это теоретически может ответить на вопрос, [было бы предпочтительнее] (// meta.stackoverflow. com/q/8259), чтобы включить здесь основные части ответа и предоставить ссылку для справки. – Rizier123
Спасибо, но я не могу включить библиотеку commons.apache в свое приложение по некоторым причинам безопасности ... –