체크 - java 한글 포함 여부



문자열에서 URL의 존재를 감지하는 방법 (9)

java.net.URL을 사용하십시오 !!

이 "java.net.URL"에 대해 java에서 핵심 클래스를 사용하지 말고 URL의 유효성을 검사하도록하십시오.

다음 코드는 "예외적 인 조건에서만 예외를 사용하십시오"라는 황금 원칙을 위반하는 반면 Java 플랫폼에서 완성 된 veeery 무언가를 위해 바퀴를 재발 명하려는 것은 의미가 없습니다.

코드는 다음과 같습니다.

import java.net.URL;
import java.net.MalformedURLException;

// Replaces URLs with html hrefs codes
public class URLInString {
    public static void main(String[] args) {
        String s = args[0];
        // separate input by spaces ( URLs don't have spaces )
        String [] parts = s.split("\\s+");

        // Attempt to convert each item into an URL.   
        for( String item : parts ) try {
            URL url = new URL(item);
            // If possible then replace with anchor...
            System.out.print("<a href=\"" + url + "\">"+ url + "</a> " );    
        } catch (MalformedURLException e) {
            // If there was an URL that was not it!...
            System.out.print( item + " " );
        }

        System.out.println();
    }
}

다음 입력을 사용합니다.

"Please go to http://stackoverflow.com and then mailto:[email protected] to download a file from    ftp://user:[email protected]/someFile.txt"

다음 출력을 생성합니다.

Please go to <a href="http://stackoverflow.com">http://stackoverflow.com</a> and then <a href="mailto:[email protected]">mailto:[email protected]</a> to download a file from    <a href="ftp://user:[email protected]/someFile.txt">ftp://user:[email protected]/someFile.txt</a>

물론 다른 프로토콜이 다른 방식으로 처리 될 수 있습니다. 예를 들어 URL 클래스의 getter를 사용하여 모든 정보를 얻을 수 있습니다.

 url.getProtocol();

또는 나머지 속성 : spec, port, file, query, ref 등

http://java.sun.com/javase/6/docs/api/java/net/URL.html

java가 인식하지 못하는 URL이 있고 (라이브러리 업데이트로) URL 클래스에 통합되면 모든 프로토콜 (모든 Java 플랫폼이 인식하는 모든 프로토콜)을 처리하고 추가 이점으로 처리합니다. 투명하게!

입력 문자열이 있습니다. Please go to http://stackoverflow.com . String의 URL 부분이 감지되고 앵커 <a href=""></a> 가 여러 브라우저 / IDE / 응용 프로그램에 의해 자동으로 추가됩니다. 따라서 Please go to <a href='http://stackoverflow.com'>http://stackoverflow.com</a> .

Java를 사용하여 동일한 작업을 수행해야합니다.


2017 년에보다 편리한 방법을 제안하십시오.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:autoLink="web"
    android:linksClickable="true"/>

또는 모든 종류의 링크에 대해 android:autoLink="all"


PhiLho의 답변은 다음과 같습니다 : msg.replaceAll("(?:https?|ftps?)://[\w/%.-][/\??\w=?\w?/%.-]?[/\?&\w=?\w?/%.-]*", "$0");


URL을 찾으려면 다음과 같이하면됩니다.

if (yourtextview.getText().toString().contains("www") || yourtextview.getText().toString().contains("http://"){ your code here if contains URL;}

나는 내 자신의 URI / URL 추출기를 썼고 누군가 IMHO가 다른 답변보다 낫다는 점을 고려하면 유용하다고 생각한 것 같습니다.

  • 그것의 스트림 기반 및 대형 문서에서 사용할 수 있습니다
  • 전략 체인을 통해 모든 종류의 "Atwood Paren" 문제를 처리 할 수있는 확장 성이 있습니다.

코드는 게시물 (비록 하나의 Java 파일 임에도 불구하고)에 다소 길기 때문에 나는 gist github 에 넣었습니다.

위의 글 머리 기호가 어떻게 나타나는지 보여주기 위해 호출하는 주요 메소드 중 하나의 시그니처입니다.

public static Iterator<ExtractedURI> extractURIs(
    final Reader reader,
    final Iterable<ToURIStrategy> strategies,
    String ... schemes);

대부분의 Atwood 문제를 처리하는 기본 전략 체인이 있습니다.

public static List<ToURIStrategy> DEFAULT_STRATEGY_CHAIN = ImmutableList.of(
    new RemoveSurroundsWithToURIStrategy("'"),
    new RemoveSurroundsWithToURIStrategy("\""),
    new RemoveSurroundsWithToURIStrategy("(", ")"),
    new RemoveEndsWithToURIStrategy("."),
    DEFAULT_STRATEGY,
    REMOVE_LAST_STRATEGY);

즐겨!


나는 정확하게 이것을하는 작은 도서관을 만들었다.

https://github.com/robinst/autolink-java

까다로운 몇 가지 예와 링크가 감지됩니다.


다음과 같이 할 수 있습니다 (필요에 맞게 정규식 조정).

String originalString = "Please go to http://www..com";
String newString = originalString.replaceAll("http://.+?(com|net|org)/{0,1}", "<a href=\"$0\">$0</a>");


원어:

String msg = "Please go to http://.com";
String withURL = msg.replaceAll("(?:https?|ftps?)://[\\w/%.-]+", "<a href='$0'>$0</a>");
System.out.println(withURL);

적절한 URL, 특히 GET 매개 변수 (? foo = bar & x = 25)와 일치 시키려면 상세 검색이 필요합니다.





url