Como definir uma variável de string java igual a “htp: // website htp: // website”

Por isso, tenho uma lista grande de sites e quero colocá-los todos em uma variável String. Eu sei que não posso ir individualmente para todos os links e escaping do //, mas há mais de algumas centenas de links. Existe uma maneira de fazer um “escape de bloco”, então tudo entre o “bloco” é escapado? Este é um exemplo do que eu quero salvar na variável.

String links="http://website http://website http://website http://website http://website http://website" 

Também alguém pode pensar em qualquer outro problema que eu possa ter ao fazer isso?

Eu fiz o htp em vez de http porque eu não tenho permissão para postar “hyperlinks” de acordo com o estouro de pilha como eu não estou nesse nível: p

Muito obrigado

Edit: Eu estou fazendo um programa porque eu tenho cerca de 50 páginas de um documento do Word que é preenchido com e-mails e outros textos. Eu quero filtrar apenas os e-mails. Eu escrevi o programa para fazer isso, que era muito simples, não só preciso descobrir para armazenar as páginas em uma variável de seqüência de caracteres em que o programa será executado.

Sua pergunta não está bem escrita. Melhorá-lo, por favor. Em seu formato atual, ele será fechado como “muito vago”.

Você quer filtrar e-mails ou sites? Seu exemplo é sobre sites, você envia mensagens sobre e-mails. Como não sei e decidi tentar ajudá-lo de qualquer maneira, decidi fazer as duas coisas.

Aqui vai o código:

 private static final Pattern EMAIL_REGEX = Pattern.compile("[A-Za-z0-9](:?(:?[_\\.\\-]?[a-zA-Z0-9]+)*)@(:?[A-Za-z0-9]+)(:?(:?[\\.\\-]?[a-zA-Z0-9]+)*)\\.(:?[A-Za-z]{2,})"); private static final Pattern WEBSITE_REGEX = Pattern.compile("http(:?s?)://[_#\\.\\-/\\?&=a-zA-Z0-9]*"); public static String readFileAsString(String fileName) throws IOException { File f = new File(fileName); byte[] b = new byte[(int) f.length()]; InputStream is = null; try { is = new FileInputStream(f); is.read(b); return new String(b, "UTF-8"); } finally { if (is != null) is.close(); } } public static List filterEmails(String everything) { List list = new ArrayList(8192); Matcher m = EMAIL_REGEX.matcher(everything); while (m.find()) { list.add(m.group()); } return list; } public static List filterWebsites(String everything) { List list = new ArrayList(8192); Matcher m = WEBSITE_REGEX.matcher(everything); while (m.find()) { list.add(m.group()); } return list; } 

Para garantir que funciona, primeiro vamos testar o método filterEmails e filterWebsites:

 public static void main(String[] args) { System.out.println(filterEmails("Orange, pizza whatever else joe@somewhere.com a lot of text here. Blahblah blah with Luke Skywalker (luke@starwars.com) hfkjdsh fhdsjf jdhf Paulo ")); System.out.println(filterWebsites("Orange, pizza whatever else joe@somewhere.com a lot of text here. Blahblah blah with Luke Skywalker (http://luke.starwars.com/force) hfkjdsh fhdsjf jdhf Paulo  And the http://www.somewhere.com as x.")); } 

Ele produz:

 [joe@somewhere.com, luke@starwars.com, aaa.aaa@bgf-ret.com.br] [http://luke.starwars.com/force, https://darth.vader/blackside?sith=true&midclorians, http://www.somewhere.com] 

Para testar o método readFileAsString:

 public static void main(String[] args) { System.out.println(readFileAsString("C:\\The_Path_To_Your_File\\SomeFile.txt")); } 

Se esse arquivo existir, seu conteúdo será impresso.

Se você não gosta do fato de que ele retorna List vez de uma String com itens divididos por espaços, isso é simples de resolver:

 public static String collapse(List list) { StringBuilder sb = new StringBuilder(50 * list.size()); for (String s : list) { sb.append(" ").append(s); } sb.delete(0, 1); return sb.toString(); } 

Colando todos juntos:

 String fileName = ...; String webSites = collapse(filterWebsites(readFileAsString(fileName))); String emails = collapse(filterEmails(readFileAsString(fileName))); 

Sugiro que você salve seu documento do Word como texto sem formatação. Em seguida, você pode usar classs do pacote java.io (como o Scanner para ler o texto).

Para resolver o problema de sobrescrever a variável String cada vez que você lê uma linha, você pode usar uma matriz ou ArrayList . Isso é muito mais ideal do que manter todos os endereços da Web em uma única String pois você pode acessar cada endereço individualmente sempre que desejar.

Para o seu primeiro problema, retire todo o texto da palavra, coloque-o em algo que faça expressões regulares, use expressões regulares para citar cada linha e finalize cada linha com + . Agora edite a última linha e altere + para ; . Acima da primeira linha, escreva String links = . Copie este novo arquivo para sua fonte java. Aqui está um exemplo usando regexr .

Para responder sua segunda pergunta (pensando em problemas), existe um limite superior para um literal de string Java se me lembrar corretamente de 2 ^ 16 de comprimento.

Oh e Perl foi basicamente escrito para você fazer esse tipo de coisa (pegar 50 páginas de texto e separar o que é url e o que é um email) … sem falar no grep .

Não tenho certeza de que tipo de “lista de sites” você está se referindo, mas por exemplo. um arquivo de sites separados por vírgulas você pode ler o arquivo inteiro e usar a function de split String para obter uma matriz, ou você pode usar um BufferedReader para ler o arquivo linha por linha e adicionar a um ArrayList .

De lá, você pode simplesmente fazer o loop da matriz e acrescentar a uma String , ou se você precisar:

faça um “escape de bloco”, então tudo entre o “bloco” é escapado

Você pode usar uma expressão regular para extrair partes de cada String acordo com um padrão:

 String oldString = "I only want this part"; String regExp = "(?i)()(.+?)()"; String newString = oldString.replaceAll(regExp, "$2"); 

A expressão acima removeria as tags xml devido ao "$2" que significa que você está interessado no segundo grupo da expressão, onde os grupos são identificados por colchetes ( ) . Usando "$1$3" vez disso, deve dar apenas as tags xml ao redor.

Outra abordagem muito mais simples para remover certos “blocos” de uma String é a function de replace String , onde remover o bloco que você poderia simplesmente passar em uma string vazia como o novo valor.

Espero que tudo isso ajude, caso contrário, você poderia tentar fornecer um exemplo completo com a input “lista de sites” e a saída desejada.