Loading...
DJZoning avatar DJZoning 85 Точки

Може ли да си създадем собствени функции във вградените класове в Java?

Можем ли да си напишем собствена функция/метод, която/който да извършва нещо във вградените в Java класове? Примерно:

public String padLeft(int length, char character)

Тази функция/метод ще приема int обща дължина на стринга, който искаме да ни бъде върнат, символа, с който искаме да допълним нашия стринг от ляво, който след това ще върне.

И след това от някакъв стринг да извикваме тази функция/метод? Примерно:

String binNumber = "1010".padLeft(8,'0');

И функцията да връща - "00001010"

Дали е възможно?

Извинете ако въпросът не е зададен правилно и на място!

Благодаря предварително!

Тагове:
1
Java Advanced
ivailozd avatar ivailozd 75 Точки

Наричат се методи: ТУК

0
HPetrov avatar HPetrov 822 Точки

Имаше готов метод точно за padding но е малко шантав. String.format("%s").replace(' ', '0'); "%s" всъщност ти е един обикновен placeholder и му даваш стойността по същия начин. Обаче за да .replace празните места трябва в Placeholder-а да му зададеш колко места да е дълго. Например -> String.format("%10s", Integer.toBinaryString(firstNum)).replace(' ', '0'); Това ти конвертира някакво число в двуичен вид и му задава колко елементда да е дълъг.

1
DJZoning avatar DJZoning 85 Точки

Това го пробвах и не се получи, желания ефект просто не сменяше white spaces с '0' и за това направих това

public static String padLeft(String s, int lenght, char character){
    while(s.length() < lenght){
    s = character + s;
    }
        return s;

}

и всичко стана ОК само, че сега не го използваме върху стринг, ами трябва да му зададем стринг като параметър.

0
Samuil.Petrow avatar Samuil.Petrow 1550 Точки

DJZoning, това за което ти говориш се осъществява чрез Extension Methods в C# или чрез prototype в Javascript, но за съжаление няма еквивалент в Java...

0
HPetrov avatar HPetrov 822 Точки

При мен се получи без проблем, не знам защо не се получава и при теб. Може би трябва да вметна, че с този метод всъщност задавам на друг string някаква стойност. Ако просто искам да принтирам нещо и на място да го запълня, няма да стане, иска малко повече писане предварително :)

1
aslv1 avatar aslv1 304 Точки

Аз използвах

StringUtils.leftPad(Integer.toBinaryString(a), 10, '0')

като пишеш отгоре

import org.apache.commons.lang.StringUtils;

Това е външна библиотека и може да си изтеглиш .jar-а оттук smile

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.