-
+80
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
private static final char DELIM = '_';
public String createDocName() {
...
final String sDelim = Character.toString(DELIM);
String res = stringWithDelimiter(docType) + stringWithDelimiter(docNumber) + stringWithDelimiter(docDate) + stringWithDelimiter(documentReceiptDate);
res = res.length() < sDelim.length() ? "" : res.substring(0, res.length() - sDelim.length());
res = res.replace(sDelim + sDelim + sDelim, sDelim);
res = res.replace(sDelim + sDelim, sDelim);
if (res.charAt(0) == DELIM)
res = res.substring(1);
if (res.charAt(res.length() - 1) == DELIM)
res.substring(0, res.length() - sDelim.length());
return res;
}
private String stringWithDelimiter(Object o) {
final String sDelim = Character.toString(DELIM);
String s = (String) o;
return StringUtils.isNotEmpty(s) ? s + sDelim : sDelim;
}
метод createDocName должен из нескольких полей документа составить имя документа, используя в качестве разделителя "_".
Сначала я не мог предположить что делает этот код, но подсказал коллега по работе:
потензицально, вызов String res = stringWithDelimiter(docType) + stringWithDelimiter(docNumber) + stringWithDelimiter(docDate) + stringWithDelimiter(documentReceiptDate) ; может давать запись например такую: "docType___" - в случае если docNumber, docDate и documentReceiptDate будут пустыми строками (а можно получить и "___documentReceiptDate".
НО, предусмотрительный разработчик позаботился об это проблеме!
Он заменяет, "___" и "__" с помощью:
res = res.replace(sDelim + sDelim + sDelim, sDelim);
res = res.replace(sDelim + sDelim, sDelim);
Затем удаляет знаки подчеркиваний в начале и в конце строки:
if (res.charAt(0) == DELIM)
res = res.substring(1);
if (res.charAt(res.length() - 1) == DELIM)
res.substring(0, res.length() - sDelim.length());
Отличное решение, можно было бы конечно переписать метод stringWithDelimiter, чтобы он не дописывал "_" для пустых строк, но это ведь не так круто правда? Жаль только что придется этот класный код снова переписывать если вдруг измениться число параметров, или поменяется разделитель...
LexeY4eg,
23 Ноября 2011
-
+153
- 1
- 2
- 3
- 4
- 5
if (!field.parentElement.childNodes[0].checked)
{
getElementByFieldName("Original").parentNode.childNodes[0].disabled = true;
getElementByFieldName("Duplicate").parentNode.childNodes[0].disabled = true;
...
Далее идет ещё примерно 20 аналогичных обращений, аля parentNode.childNodes[0]
Очень читабельный и понятный код! :)
LexeY4eg,
23 Ноября 2011
-
−100
- 1
- 2
- 3
- 4
class SomeThing(object)
def _get_value(self):
return #return some value
get_value = property(_get_value)
Декораторы? не не слышал.
Zapix,
23 Ноября 2011
-
+81
- 1
- 2
- 3
- 4
- 5
Date date = (Date)value.getParam("DocReceiptDate");
if (date.getHours() == 24) {
date.setHours(0);
}
String documentReceiptDate = (new SimpleDateFormat("dd.MM.yyyy.kk.mm")).format(date);
Элегантная попытка форматирования даты.
Задача было вместо 24 часов писать 00, например не "24.11.2011.24.23", а "24.11.2011.00.23".
Как все уже догадались, следовало просто использовать формат "dd.MM.yyyy.HH.mm".
LexeY4eg,
23 Ноября 2011
-
+147
- 1
- 2
- 3
- 4
- 5
} catch (PDOException $e)
{
print_r($e->__toString());
die();
}
sectus,
23 Ноября 2011
-
+146
- 1
for (int i=0, N=sizeof(a)/sizeof(int); ++i<N-1; s+=(int)(a[i]>a[i-1]&&a[i]>a[i+1]));
Это говнокод или годный троллинг? Топик http://forum.codenet.ru/threads/69046-Помогите-задача-С/
mrxak,
22 Ноября 2011
-
+145
AjiTae,
22 Ноября 2011
-
+100
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
var s: string;
res: string;
begin
readln(s);
res := 'Слишком большая строка';
if length(s) = 0 then res := s;
if length(s) = 1 then res := s;
if length(s) = 2 then res := s;
if length(s) = 3 then res := s;
if length(s) = 4 then res := s[0] + ' ' + s[1] + s[2] + s[3];
if length(s) = 5 then res := s[0] + s[1] +' ' + s[2] + s[3] + s[4];
if length(s) = 6 then res := s[0] + s[1] + s[2] +' ' + s[3] + s[4] + s[5];
if length(s) = 7 then res := s[0] + ' ' + s[1] + s[2] + s[3] +' ' + s[4] + s[5] + s[6];
if length(s) = 8 then res := s[0] + s[1] + ' ' + s[2] + s[3] + s[4] +' ' + s[5] + s[6] + s[7];
if length(s) = 9 then res := s[0] + s[1] + s[2] + ' ' + s[3] + s[4] + s[5] +' ' + s[6] + s[7] + s[8];
writeln(res);
end.
Код масштабируемый - сейчас он обрабатывает строки, в которые можно записать от нуля до девяти символов, но его прозрачно можно смасштабировать до обработки хоть 20, хоть 50 символов.
Кроме того, тут не используются платформозависимые API.
Govnocoder#0xFF,
22 Ноября 2011
-
+154
- 1
- 2
- 3
- 4
- 5
// сохраняем лог
$log = fopen($logfile,'w'); // открыли файл, стерев его
foreach($temp as $tmp) {fwrite($log,trim($tmp)."n");} // каждый элемент массива записали в строку
fclose($log); // закрыли лог
?>
Зачем мне implode и file_put_contents?
У меня нет времени, чтобы ебаться с ними! Лучше я создам цикл.
http://forum.htmlbook.ru/index.php?showtopic=7169
На это ссылка в топ-теме причем.
7ion,
22 Ноября 2011
-
−85
- 1
- 2
- 3
- 4
- 5
def __getattr__(self,name):
if name == '_creator':
return 'Article'
else:
raise AttributeError
H1D,
22 Ноября 2011