Хорошие,
Я использую маленькую линию кода, чтобы отлаживать информацию о ценах, полученную через "scrap". Ввиду того, что я получаю различных стран, у меня есть различные монеты и я хочу оставить чистое число.
Для этого я использую:
price.select("span").first().text().replace(".", "").replaceAll("SG$|CAD|R$|HUF|€|₽|incl. GST|$|R|₹|£|¥|₩|NT$","")
Какова проблема? Так как, что есть 3 символа, которых он не лишает меня: $, SG$ (монета singapur) и NT$ (деньги Тайваня).
Такой который, мог бы понимать, что монета Тайваня не функционировал хорошо, так как перед тем, как заменять NT$, - замена доллара ($), я понимаю, что у меня был бы должен оставаться тогда NT. Однако он не перемещает ни вещи, ни другой.
Я только что не нашел проблему, оставшуюся часть символов да, которая снимает их.
Помни, что такие специальные символы как $ в html представляются с одним cГіdigo, и не буквальный
AsГ - эквивалента $ $
тогда он меняется ты повторно нравится включая cГіdigo и не буквальный.
- то, что случается со мной, что podrГ, - когда это
, Здесь есть таблица со специальными символами http://www.degraeve.com/reference/specialcharacters.php
price.select(".price-disclaimer span").first().ownText().replace(",", ".").replaceAll("SG$|CAD|R$|HUF|€|₽|incl. GST|NT$|R|₹|£|¥|₩|$","")
– JetLagFox
12.03.2017, 16:21
EDIT у цепи, которую ты хочешь заменить, есть несколько проблем, podrГ - в quizГЎ решать с regex, но... например, в часть проблемы со знаком $, ты просишь у него заменять тебе точки и внутри монет у тебя есть стоимость с точкой (.).
Тогда, выдвинул эту тебе soluciГіn. Функционируй создавая воображаемую цепь:
public class Reemplazar
{
public static void main(String[] args)
{
/* CADENA IMAGINARIA:
* Para tu código usa esta variable:
* String sSinMoneda=price.select("span").first().text();
* La de abajo es para probar el programa
*/
String sSinMoneda="SG$100. $1000 SG$1000 200NT$ 1CAD 50HUF 20€ ₽456 incl. GST 6875 R45 ₹67 £658 ¥89 ₩234 NT$142";
//Este valor tiene un punto (.) por lo tanto reemplazamos antes que reemplazar el . sólo
sSinMoneda = sSinMoneda.replace("incl. GST", "");
sSinMoneda = sSinMoneda.replace(".", "");
sSinMoneda = sSinMoneda.replaceAll("CAD|HUF|€|₽|incl. GST|R|₹|£|¥|₩","");
//Todos los reemplazos con el signo $
sSinMoneda = sSinMoneda.replace("SG$","");
sSinMoneda = sSinMoneda.replace("R$","");
sSinMoneda = sSinMoneda.replace("NT$","");
//Dejamos a $ sólo para el final
sSinMoneda = sSinMoneda.replace("$","");
System.out.println(sSinMoneda);
}
}
Оказавшиеся
100 1000 1000 200 1 50 20 456 6875 45 67 658 89 234 142
Твоя проблема состоит в том, что ты хочешь использовать как символы, в которые они представляют другие вещи ( видеть documentaciГіn ):
1. - carГЎcter . представляет любой carГЎcter (поэтому видно, что ты сделал это отдельным, но ты это можешь включать в regexp)
2.-El carГЎcter $ представь конец lГ-nea
, Чтобы помечать один carГЎcter в частности envuГ©lvelo между квадратными скобками []. Если меняешь ты expresiГіn регулировать из-за той cГіdigo, что прикрепил тебя, оно должно тебе функционировать (он включает tambiГ©n точку и ты уберегаешься другой replace
):
String ejemplo = "SG$100. $1000 SG$1000 200NT$ 1CAD 50HUF 20€ ₽456 incl. GST 6875 R45 ₹67 £658 ¥89 ₩234 NT$142";
ejemplo = ejemplo.replaceAll("SG[$]|CAD|R[$]|HUF|€|₽|incl. GST|[$]|R|₹|£|¥|₩|NT[$]|[.]","");
System.out.println(ejemplo);
С этим вывод:
100 1000 1000 200 1 50 20 456 6875 45 67 658 89 234 142
Хорошие, попытайся помещать перед '$' перевернутый брусок '\', asГ - например:
replaceAll("SG$|CAD|R$|HUF|€|₽|incl. GST|$|R|₹|£|¥|₩|NT$","")
SG\$
или NT\$
... Твой ответ он это не разъясняет очень.
– Muriano
13.03.2017, 15:08
\$
последовательностью утечки. Форма состоит в том, чтобы завертывать это между квадратными скобками [$]
для того, чтобы он отнесся к этому как к cará cter, поскольку я поместил в моем ответе.
– Awes0meM4n
13.03.2017, 15:38