2011-02-26 1 views
0

UIWebView에 표시 할 트윗을 변환하려고합니다. #hashtags와 @usernames를 HTML 링크로 변환하여 처리 할 수 ​​있습니다.여러 언어로 iOS를 사용하여 #hashtags 및 @usernames에 대한 트윗 구문 분석

정규 표현식을 사용하는 몇 가지 해결책을 찾았지만 대부분 전자 메일 주소와 웹 링크에 '@'문자가있을 수 있으므로 문제가있는 것 같습니다.

누구든지 Objective-C에서이 작업을 수행 할 수있는 적절한 방법을 알고 있습니까? iOS 4 and later에서 사용할 수있는 정규식을 사용하여 완료 할 수 있습니까? 아니면 파서로 펑키해야합니까?

오, 예, 언급하는 것을 잊어 버렸습니다. 모든 언어에서 작동하고 싶습니다. (아랍어, 중국어, 독일어 등 ...)

+0

제 답변이 도움이 되었습니까? –

+1

아하하하니 Objective-c 솔루션이 필요하다.이 자바 스크립트 솔루션을 찾았지만 UIWebView /를 사용하지 않는다. RegEx를 ObjC로 변환하는 것은 너무 어렵지 않아야한다 :) 다른 사람들이 잘못된 결과를 찾지 못하도록 수정 된 질문 태그 내가 그랬던 것처럼! –

답변

2

당신이 webview에서 이것을하고 있다면, 왜 당신은 자바 스크립트를 사용합니까? 나는 링크를 자동으로 찾아야하는 프로젝트에서이 작업을 수행했습니다.

someTweet.replace(
    /(\b(https?):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, 
    "<a href='$1'>$1</a>" 
) 

정규식이 간단하고 거기에 모든 URL을 잡을 수 있지만, 대부분의 시간을했다 : 나는 짧은 자바 스크립트 도움이되도록 웹보기의 데이터 검출기에 의존하지 수 있습니다. 이것을 사용자 이름과 해시 태그로 전송하는 것은 너무 어렵지 않아야합니다.

사용자 이름은 문자, 숫자 및 _로 구성되어 있습니다. @ ([1-9a-zA-Z _] +)는 일치합니다. 나는 그들이 아무것도가 #로 시작하고 공백, # 또는 @로 종료되어 가정,하지만 그건 그냥 추측 것 :

someTweet.replace(
    /@([1-9a-zA-Z_]+)/, 
    "<a href='http://twitter.com/$1'>@$1</a>") 
) 

해시 태그, 나는이 확실하지 않다. # ([^ \ s # @] *)가 작동 할 수 있습니다.

someTweet.replace(
    /#([^\s#@]*)/, 
    "<a href='http://twitter.com/search?q=%23$1'>#$1</a>" 
) 
관련 문제