Регистрация  |  Вход

Конвертация String в Boolean

...
Boolean toKillYourself = true;
if (RestContext.request.params.get('toKillYourself') != null) {
String toKillYourselfString = RestContext.request.params.get('toKillYourself');
if (String.isNotBlank(toKillYourselfString) && (toKillYourselfString.length() == 4 || toKillYourselfString.length() == 5)) {
toPullDeleted = Boolean.valueOf(toKillYourselfString);
} else {
// 'Wrong format of toKillYourself parameter ('+toKillYourselfString+')');
return null;
}
}
if (toKillYourself) {
...

Как вам мой код в сервисе? :-)

Только сегодня узнал, что

Boolean.valueOf(String)

Converts the specified string to a Boolean value and returns true if the specified string value is true. Otherwise, returns false.

В параметр сервиса передавалась единичка (1), и сервис, почему-то, не правильно работал :-)

[code]...
Boolean toKillYourself = true;
if (RestContext.request.params.get('toKillYourself') != null) {
  String toKillYourselfString = RestContext.request.params.get('toKillYourself');
  if (String.isNotBlank(toKillYourselfString) && (toKillYourselfString.length() == 4 || toKillYourselfString.length() == 5)) {
    toPullDeleted = Boolean.valueOf(toKillYourselfString);
  } else {
    // 'Wrong format of toKillYourself parameter ('+toKillYourselfString+')');
    return null;
  }
}
if (toKillYourself) {
...[/code]
Как вам мой код в сервисе? :-)

Только сегодня узнал, что
[quote][b]Boolean.valueOf(String)[/b]

Converts the specified string to a Boolean value and returns true if the specified string value is true. Otherwise, returns false.[/quote]

В параметр сервиса передавалась единичка (1), и сервис, почему-то, не правильно работал :-)

Что-то монструозно все выглядит.
Зачем столько проверок?

Что-то монструозно все выглядит.
Зачем столько проверок?

Dmitry Shnyrev
Что-то монструозно все выглядит.
Зачем столько проверок?

А как бы ты написал?

[quote="Dmitry Shnyrev"]Что-то монструозно все выглядит.
Зачем столько проверок?[/quote]
А как бы ты написал?

toPullDeleted = Boolean.valueOf(RestContext.request.params.get('toKillYourself'));

[code]toPullDeleted = Boolean.valueOf(RestContext.request.params.get('toKillYourself'));[/code]

Chiz
(toKillYourselfString.length() == 4 || toKillYourselfString.length() == 5)

Можно запостить на http://govnokod.ru/

[quote="Chiz"](toKillYourselfString.length() == 4 || toKillYourselfString.length() == 5)[/quote]
Можно запостить на http://govnokod.ru/

Gres
Chiz
(toKillYourselfString.length() == 4 || toKillYourselfString.length() == 5)

Можно запостить на http://govnokod.ru/

Это оттуда взято ;-)
Сам ржал, что по другому никак не обойтись.

[quote="Gres"][quote="Chiz"](toKillYourselfString.length() == 4 || toKillYourselfString.length() == 5)[/quote]
Можно запостить на http://govnokod.ru/[/quote]
Это оттуда взято ;-)
Сам ржал, что по другому никак не обойтись.

Dmitry Shnyrev
toPullDeleted = Boolean.valueOf(RestContext.request.params.get('toKillYourself'));

Именно так и было, до сегодня. Выяснилось, что можно передать 1 и СФ схавает это как false. И никто об этом знать не будет - не подходит.

[quote="Dmitry Shnyrev"][code]toPullDeleted = Boolean.valueOf(RestContext.request.params.get('toKillYourself'));[/code][/quote]
Именно так и было, до сегодня. Выяснилось, что можно передать 1 и СФ схавает это как false. И никто об этом знать не будет - не подходит.

Chiz
то оттуда взято ;-)

Не стоит так делать)

Chiz
Именно так и было, до сегодня. Выяснилось, что можно передать 1 и СФ схавает это как false. И никто об этом знать не будет - не подходит.

Еще какая-то кастомная логика предполагается?

[quote="Chiz"]то оттуда взято ;-) [/quote]
Не стоит так делать)

[quote="Chiz"]Именно так и было, до сегодня. Выяснилось, что можно передать 1 и СФ схавает это как false. И никто об этом знать не будет - не подходит.[/quote]
Еще какая-то кастомная логика предполагается?

Gres
Еще какая-то кастомная логика предполагается?
С toKillYourself? Не, только один раз используется.
Хотя, я вот теперь думаю, сделать свой Boolean.valueOf(), чтоб небыло таких приколов.

[quote="Gres"]Еще какая-то кастомная логика предполагается?[/quote]С toKillYourself? Не, только один раз используется.
Хотя, я вот теперь думаю, сделать свой Boolean.valueOf(), чтоб небыло таких приколов.

ну а чем не правильно что "1" это false? Не вижу тут криминала. Или у вас там может приходить 1 как true?

Если так то можно еще проще сделать

toPullDeleted = (RestContext.request.params.get('toKillYourself')=='true' || RestContext.request.params.get('toKillYourself')=='1')

как собственно и первый вариант переписать

toPullDeleted = RestContext.request.params.get('toKillYourself') == 'true'

ну а чем не правильно что "1" это false? Не вижу тут криминала. Или у вас там может приходить 1 как true?

Если так то можно еще проще сделать

[code]toPullDeleted = (RestContext.request.params.get('toKillYourself')=='true' || RestContext.request.params.get('toKillYourself')=='1')[/code]

как собственно и первый вариант переписать
[code]toPullDeleted = RestContext.request.params.get('toKillYourself') == 'true'[/code]

Что-то совсем твой пример мозг взорвал.
Это ж простая задача - определить пришел ли нужный параметр.
Всегда одной строчкой кода решался. и без всяких Boolean.valueOf()

Что-то совсем твой пример мозг взорвал.
Это ж простая задача - определить пришел ли нужный параметр.
Всегда одной строчкой кода решался. и без всяких Boolean.valueOf()

Сделай мапу

Map<String, Boolean> stringToBooleanMap = new Map<String, Boolean>{
'true' => true,
'1' => true,
'false' => false,
'0' => false
}
String toPullDeletedString = RestContext.request.params.get('toKillYourself');
Boolean toPullDeleted = toPullDeletedString != null && stringToBooleanMap.contains(toPullDeletedString.toLowerCase()) ? stringToBooleanMap.get(toPullDeletedString.toLowerCase()) : false;

Сделай мапу
[code]
Map<String, Boolean> stringToBooleanMap = new Map<String, Boolean>{
'true' => true,
'1' => true,
'false' => false,
'0' => false
}
String toPullDeletedString = RestContext.request.params.get('toKillYourself');
Boolean toPullDeleted = toPullDeletedString != null && stringToBooleanMap.contains(toPullDeletedString.toLowerCase()) ? stringToBooleanMap.get(toPullDeletedString.toLowerCase()) : false;
[/code]

Dmitry Shnyrev
ну а чем не правильно что "1" это false? Не вижу тут криминала. Или у вас там может приходить 1 как true?

Если так то можно еще проще сделать

toPullDeleted = (RestContext.request.params.get('toKillYourself')=='true' || RestContext.request.params.get('toKillYourself')=='1')

как собственно и первый вариант переписать

toPullDeleted = RestContext.request.params.get('toKillYourself') == 'true'

По правилас СФ - все правильно. Только вот iOS думала, что 1 == тру.

[quote="Dmitry Shnyrev"]ну а чем не правильно что "1" это false? Не вижу тут криминала. Или у вас там может приходить 1 как true?

Если так то можно еще проще сделать

[code]toPullDeleted = (RestContext.request.params.get('toKillYourself')=='true' || RestContext.request.params.get('toKillYourself')=='1')[/code]

как собственно и первый вариант переписать
[code]toPullDeleted = RestContext.request.params.get('toKillYourself') == 'true'[/code][/quote]
По правилас СФ - все правильно. Только вот iOS думала, что 1 == тру.

Dmitry Shnyrev
Что-то совсем твой пример мозг взорвал.
Это ж простая задача - определить пришел ли нужный параметр.
Всегда одной строчкой кода решался. и без всяких Boolean.valueOf()

Я думал, что если приходит 'true' или 'false', то все нормально, а если что-то другое, то вывалится с ошибкой.

[quote="Dmitry Shnyrev"]Что-то совсем твой пример мозг взорвал.
Это ж простая задача - определить пришел ли нужный параметр.
Всегда одной строчкой кода решался. и без всяких Boolean.valueOf()[/quote]
Я думал, что если приходит 'true' или 'false', то все нормально, а если что-то другое, то вывалится с ошибкой.

ну все у меня вообще мозг в осадок выпал При чем здесь iOS.

:D ну все у меня вообще мозг в осадок выпал :D При чем здесь iOS.

Dmitry Shnyrev
:D ну все у меня вообще мозг в осадок выпал При чем здесь iOS.
Он присылает 1 вместо true

[quote="Dmitry Shnyrev"]:D ну все у меня вообще мозг в осадок выпал :D При чем здесь iOS.[/quote]Он присылает 1 вместо true

Что для сервиса критично - получить правильный true параметр? Если да, то пусть все возможные варианты, означающие true обрабатываются в условии, а всё остальное будет false, например:

String toKillYourselfString = RestContext.request.params.get('toKillYourself');
Boolean toKillYourself = (toKillYourselfString == '1' || toKillYourselfString == 'true');

Что для сервиса критично - получить правильный true параметр? Если да, то пусть все возможные варианты, означающие true обрабатываются в условии, а всё остальное будет false, например:
[code]
String toKillYourselfString = RestContext.request.params.get('toKillYourself');
Boolean toKillYourself = (toKillYourselfString == '1' || toKillYourselfString == 'true');[/code]

ilya leshchuk
Что для сервиса критично - получить правильный true параметр? Если да, то пусть все возможные варианты, означающие true обрабатываются в условии, а всё остальное будет false, например:
String toKillYourselfString = RestContext.request.params.get('toKillYourself');
Boolean toKillYourself = (toKillYourselfString == '1' || toKillYourselfString == 'true');

Да, именно так я и решил сделать и не заморачиваться с конвертацией в Boolean.

[quote="ilya leshchuk"]Что для сервиса критично - получить правильный true параметр? Если да, то пусть все возможные варианты, означающие true обрабатываются в условии, а всё остальное будет false, например:
[code]
String toKillYourselfString = RestContext.request.params.get('toKillYourself');
Boolean toKillYourself = (toKillYourselfString == '1' || toKillYourselfString == 'true');[/code][/quote]
Да, именно так я и решил сделать и не заморачиваться с конвертацией в Boolean.