¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Otimização de cadeias: como truncar e distribuir palavras em 40 caracteres de forma eficiente

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 2 Vistas
0
Cargando...

Olá especialistas,

temos um requisito

- truncar a cadeia (combinação de palavras) em 40 caracteres. Portanto, temos 1 campo de entrada e 2 campos de saída

- no primeiro campo, precisamos verificar a última palavra se ela se encaixa nos 40 caracteres. Será adicionada ao primeiro campo, caso contrário, será movida para o segundo campo. (no segundo campo, também devemos aplicar a mesma lógica) e os 40 restantes também serão ajustados no segundo campo.

- por exemplo. "Por favor, visite a seção de Recursos da Comunidade" a contagem total para essa cadeia é 49. agora, o comprimento "Por favor, visite a seção de Recursos da Comunidade" é de 40. portanto, devemos ignorar "seção" e movê-la para o próximo campo.

portanto, o primeiro campo deve ir até "Por favor, visite a seção de Recursos da Comunidade" e o próximo campo deve ser preenchido como "para a seção"

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá,

Pode tentar a lógica a seguir?

for (int i = 0; i < str.length(); i +=40) {

output.addValue(str.substring(i, Math.min(i +40, str.length())));

}

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Atualizei o código para que seja um pouco mais breve 😊

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Anurag

Seu problema não é simples, de fato. A primeira solução que me ocorre é dividir a string com String.split na expressão regular \s+ (ou seja, espaço em branco). No entanto, String.split remove o delimitador, o que significa que todo o espaço em branco desaparece do seu texto. Não é bom.

No entanto, há uma alternativa. Dividir no limite de palavra \b preserva o espaço em branco e, de fato, resolve alguns casos específicos, como dividir em uma vírgula.

Aqui está um código de exemplo:

def splitLen = 40
def splitRegex = /\b/
def b = new StringBuilder()

originalString.split(splitRegex).each { s ->
    if (b.length() + s.length() <= splitLen) {
        // A string que está sendo construída pode conter esta subcadeia.
        b.append(s)
    } else {
        // A string que está sendo construída não pode conter esta subcadeia.
        output.addValue(b.toString())
        b.setLength(0)
        b.append(s)
    }
}

if (b.length() > 0) {
    output.addValue(b.toString())
}

Dividi a cadeia original ao longo do limite de palavra e, em seguida, percorro cada subcadeia resultante. Um StringBuilder acumula cada cadeia a ser incluída na saída. Existem dois casos a serem tratados:

  1. O StringBuilder pode conter a subcadeia atual
  2. O StringBuilder não pode conter a subcadeia atual

Como observa sriprasadshivaramabhat , é claro, o código deve estar envolvido em uma função personalizada. Deixo isso para você.

Saudações,

Morten

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Anurag. Seria útil se você mostrasse o que tentou até agora. Saudações, Morten

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?