Pergunta

Tendo dificuldade com este, pois acho que não conheço todas as minhas opções.

Eu tenho que analisar um campo de texto de formulário livre que preciso para mapear os valores para um banco de dados.

Aqui está um exemplo de texto, observe: nem todos os campos precisam estar lá, nem todos os delimitadores são iguais e nem todos os descritores estão disponíveis. Eu preciso verificar se o valor é apenas numérico ou é alfa numérico.

Exemplo 1

field1: 999-999234-24-2 

field2 Description: a short description 

field3: 3.222.1 

asdfg 

field number four: NO 

field5:

Exemplo 2

field1: 999-999234-24-2/field2 Description: a short description/field3: 3.222.1 asdfg/field number four: NO/field5:

Exemplo 3

999-999234-24-2 

Exemplo 4

field1: 999-999234-24-2 field2 Description: a short description field3: 3.222.1 asdfg field number four: NO field5:

Exemplo 5

field1: 999-999234-24-2 - field2 Description: a short description - field3: 3.222.1 asdfg - field number four: NO - field5: 

O que eu gostaria é de todos os campos x estarem lá na própria coluna. Observe que os dados de exemplo estão todos na mesma ordem, mas os dados ao vivo não são.

Agora, não me importo de fazer isso nas etapas, se necessário, mas com dificuldade para analisar os valores em colunas. alguma sugestão?

Eu estava pensando em algum tipo de função de caso com um regex, mas não até agora.

Foi útil?

Solução 4

Depois de muita coisa/tentativa e erro, vou lê -los em uma matriz e analisar cada linha de texto. É longo e vai ser uma bagunça, mas deve fazer o trabalho.

Outras dicas

Talvez você deva padronizar no java .Properties Formato Então você pode usar este exemplo PHP para analisá -lo:

http://www.innerweaver.com/?p=13

Como ainda está preso na minha cabeça ... do jeito que eu continuo, é começar a lidar com cada um desses casos e ver se há algum ajuste restante/precipitação. O que parece tornar isso complicado é o único deliminador confiável é o 'campo' e, se alguém usar isso em uma descrição, ele quebrará. Eu só teria que pegar o arquivo e começar a iterando.

Dividi -lo com esse regex seria pelo menos um bom ponto de partida para dividir os cabeçalhos e os dados. Basicamente, campo mais texto opcional adicional que cobre a possibilidade de 'descrição' e 'número quatro' adicionados antes do fechamento:

campo [^:] {0,12}:

Depois disso, você precisaria pelo menos a retirada de arrastar / para o caso nº 2, o ' -' para o caso nº 5, os quebra -linhas extras se você não os deseja nos dados do caso nº 1.

Regexp seria difícil de manter em algumas casos de borda. Tente escrever uma máquina de estado finito simples

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top