2014-04-17 3 views
0

사이트를 크롤링하면 일부 가격이 표시됩니다. 나는 그것의 통화 (21,00   TL)로 가격을받습니다. 통화 (TL)와 그 왼쪽 공백을 줄 바꿈으로 변환해야합니다. 간단히 말해 나는 21.00을 얻어야한다. Whatevery 내가 했어, 난 그 공백을 제거 couldnt. Java에서 문자열의 공백을 제거합니다.

나는 크롤러에서 가져온 :

<b>21,00&nbsp;TL</b> 

내가 시도하는 것 :

price_lower_str = price_lower_str.replace("&nbsp;TL",""); 

and 

price_lower_str = price_lower_str.replace(" TL",""); 

price_lower_str = price_lower_str.replace("TL",""); 
price_lower_str = price_lower_trim(); 

하지만 난 단지 21.00 얻을 couldnt한다. 누가 날 도울 수 있죠?

+1

trim()은 어떨까요? price.trim()은 마지막 공백을 제거합니다. – arghtype

+0

price_lower_str = price_lower_trim(); 나는 이미 그것을했다. –

+0

오, 그게 자바 구문, 나는 그것을 얻지 못했습니다. – arghtype

답변

1

신속하고 더러운하지만

public static void main(String[] args) { 
    String str = "<b>21,00&nbsp;TL</b>"; 
    Matcher matcher = Pattern.compile(".*?([\\d]+,[\\d]+).*").matcher(str); 
    if (matcher.matches()) System.out.println(matcher.group(1).replace(',', '.')); 
} 

OUTPUT :-) 작업

감사합니다 : 당신은 그냥 잘못된 정규 표현식을 사용하고

21.00 
+0

OP의 입력에 의해 지정된  을 제거하지 못합니다. – FrobberOfBits

+0

숫자, 쉼표 및 숫자 만 일치하므로 실패하지 않습니다. 결코 적은, 그것은 못 생겼어. 당신이 그것을 바로 증명할 수 있습니까? – Harmlezz

+0

코드에 결함이 있다고 생각합니다. 아마도 복사 - 붙여 넣기 오류 일 것입니다. 그렇지 않으면, 그것은 적절한 요청 출력을주는 것 같습니다. –

1

. 사용해보기 :

price_lower_str.replaceAll("(\\&nbsp;|\\s)+TL", "") 

먼저 replaceAll을 사용하고 있습니다. 그대로 교체하는 것이 아닙니다. 둘째, 괄호에 주목하십시오. 나는 & nbsp; OR \ s는 공백 문자와 일치합니다. 마지막으로, 나는 역 슬래시를 통해 앰퍼샌드를 통해 & nbsp; 백 슬래시 자체가 정규 표현식의 메타 캐릭터 일 때 백 슬래시를 이스케이프 처리하는 것은 고통이지만 자바 정규식에 오신 것을 환영합니다.

+0

ur 응답에 대한 감사하지만 작동하지 않음 –

+1

입력 문자열 21,00   TL에서이를 테스트하여 작동합니다. 사용중인 입력을 제공해야 작동하지 않습니다.너는 무엇을 가지고 있고, 너는 무엇을 기대 하느냐? – FrobberOfBits

1

이 간단한 처리를 위해 정규식 사운드를 무겁게 사용합니다. 이 경우에는 효율적이지 않습니다. 당신이 할 수있는 일은 < b> 태그에서>를 찾아서 amperstand까지 하위 문자열을 수행하는 것입니다.

System.out.println (test.substring (test.indexOf (">") +1, test.indexOf ("&"))));

답을 얻을 수 있습니다. 21,00

관련 문제