Это вопрос уже поднимался на форуме, но ответа на было найдено, наверное не придали значение.
Опять всплыл косяк.
Я в ответе web service получаю такую строку "12 000"
ее надо в Salesforce привести к Integer
Кажется нет проблем - надо убрать пробел и сделать Integer.valueOf()
Но проблема в том что пробел не убирается
replaceAll(' ', '') или
replaceAll('(\\s+)', '')
не помогают.
Если воспроизводить в консоли все ок - пробелы уходят. Если обрабатывать строку от внешнего сервиса, то нет.
Это вопрос уже поднимался на форуме, но ответа на было найдено, наверное не придали значение. Опять всплыл косяк. Я в ответе web service получаю такую строку "12 000" ее надо в Salesforce привести к Integer Кажется нет проблем - надо убрать пробел и сделать Integer.valueOf() Но проблема в том что пробел не убирается replaceAll(' ', '') или replaceAll('(\\s+)', '') не помогают. Если воспроизводить в консоли все ок - пробелы уходят. Если обрабатывать строку от внешнего сервиса, то нет.
viktor уже писал про это
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
Вот нашел инфу по этому
По ходу там реально лежит символ с кодом 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', '')
! ОТВЕТ :) [code].replaceAll('\u00A0', '')[/code] Проверено в Salesforce :D