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

Убрать пробел из String (результат callout)

Это вопрос уже поднимался на форуме, но ответа на было найдено, наверное не придали значение.

Опять всплыл косяк.

Я в ответе web service получаю такую строку "12 000"

ее надо в Salesforce привести к Integer

Кажется нет проблем - надо убрать пробел и сделать Integer.valueOf()

Но проблема в том что пробел не убирается

replaceAll(' ', '') или

replaceAll('(\\s+)', '')

не помогают.

Если воспроизводить в консоли все ок - пробелы уходят. Если обрабатывать строку от внешнего сервиса, то нет.

Это вопрос уже поднимался на форуме, но ответа на было найдено, наверное не придали значение.
Опять всплыл косяк.
Я в ответе web service получаю такую строку "12 000"
ее надо в Salesforce привести к Integer
Кажется нет проблем - надо убрать пробел и сделать Integer.valueOf()
Но проблема в том что пробел не убирается
replaceAll(' ', '') или
replaceAll('(\\s+)', '')
не помогают.
Если воспроизводить в консоли все ок - пробелы уходят. Если обрабатывать строку от внешнего сервиса, то нет.

viktor уже писал про это

viktor_troeglazov
в русской локале, для отделения тысяч используется пробел, по крайне визуально, если же разбить на символы то там символ с кодом 160.

Не знаю, воспроизводит ли это тот же эффект. Но вот вариант для получения "бешенного" пробела
Dmitry Shnyrev
Слушай, воспроизвел. Точно косяк
вот код:

Decimal value = 1000.10;
String formattedValue = value.format();
String thousandSep = formattedValue.substring(1,2);
String decimalSep = formattedValue.substring(5,6);
SYSTEM.DEBUG('XXXXX - '+formattedValue);
SYSTEM.DEBUG('XXXXX - '+thousandSep+' - '+decimalSep);
system.assertEquals('1 000,1', formattedValue);
Вот вывод:

11:09:13.043 (43968301)|USER_DEBUG|[5]|DEBUG|XXXXX - 1 000,1
11:09:13.044 (44011472)|USER_DEBUG|[6]|DEBUG|XXXXX - - ,
11:09:13.044 (44100971)|EXCEPTION_THROWN|[7]|System.AssertException: Assertion Failed: Expected: 1 000,1, Actual: 1 000,1
11:09:13.044 (44320677)|FATAL_ERROR|System.AssertException: Assertion Failed: Expected: 1 000,1, Actual: 1 000,1

viktor уже писал про это
[quote="viktor_troeglazov"]
в русской локале, для отделения тысяч используется пробел, по крайне визуально, если же разбить на символы то там символ с кодом 160.
[/quote]
Не знаю, воспроизводит ли это тот же эффект. Но вот вариант для получения "бешенного" пробела
[quote="Dmitry Shnyrev"]
Слушай, воспроизвел. Точно косяк 
вот код: 

Decimal value = 1000.10;
String formattedValue = value.format();
String thousandSep = formattedValue.substring(1,2);
String decimalSep = formattedValue.substring(5,6);
SYSTEM.DEBUG('XXXXX - '+formattedValue);
SYSTEM.DEBUG('XXXXX - '+thousandSep+' - '+decimalSep);
system.assertEquals('1 000,1', formattedValue);
Вот вывод: 

11:09:13.043 (43968301)|USER_DEBUG|[5]|DEBUG|XXXXX - 1 000,1
11:09:13.044 (44011472)|USER_DEBUG|[6]|DEBUG|XXXXX -   - ,
11:09:13.044 (44100971)|EXCEPTION_THROWN|[7]|System.AssertException: Assertion Failed: Expected: 1 000,1, Actual: 1 000,1
11:09:13.044 (44320677)|FATAL_ERROR|System.AssertException: Assertion Failed: Expected: 1 000,1, Actual: 1 000,1
[/quote]

По ходу там реально лежит символ с кодом 160
Вот нашел инфу по этому

194 160 is the UTF-8 encoding of a NO-BREAK SPACE codepoint (the same codepoint that HTML calls  ).
So it's really not a space, even though it looks like one. (You'll see it won't word-wrap, for instance.) A regular expression match for \s would match it, but a plain comparison with a space won't.

Теперь осталось понять как его определить поиском.

По ходу там реально лежит символ с кодом 160
Вот нашел инфу по этому 
[quote]
194 160 is the UTF-8 encoding of a NO-BREAK SPACE codepoint (the same codepoint that HTML calls  ).
So it's really not a space, even though it looks like one. (You'll see it won't word-wrap, for instance.) A regular expression match for \s would match it, but a plain comparison with a space won't.
[/quote]
Теперь осталось понять как его определить поиском.

! ОТВЕТ

.replaceAll('\u00A0', '')

Проверено в Salesforce

! ОТВЕТ :)
[code].replaceAll('\u00A0', '')[/code]
Проверено в Salesforce :D