Casi todos los idiomas tienen una función incorporada que puede dividir una cadena en una posición determinada. Sin embargo, tan pronto como tenga etiquetas html en la cadena, la función incorporada no funcionará correctamente.
Su tarea es escribir un programa o función que divida una cadena en el enésimo carácter, pero no cuenta los caracteres de las etiquetas html y generará un html válido. El programa debe mantener el formato. Los espacios fuera de las etiquetas html pueden contarse o no, como desee, pero deben conservarse. Sin embargo, puede intercambiar múltiples espacios consecutivos en un solo espacio.
Entrada:
- la cuerda
- la posición para dividir en (basado en 0)
Estos pueden tomarse como argumentos de programa o función o pueden leerse desde la entrada estándar.
Salida: la cadena dividida que se puede devolver o escribir en la salida estándar.
La entrada será html válida, no contendrá ninguna entidad (como
). Las etiquetas que se abren después del límite de caracteres deben omitirse de la salida (consulte el último ejemplo).
Ejemplo:
Entrada: <i>test</i>
3
Salida:<i>tes</i>
Entrada: <strong><i>more</i> <span style="color: red">complicated</span></strong>
7
Salida:<strong><i>more</i> <span style="color: red">co</span></strong>
Entrada: no html
2
Salida:no
Entrada: <b>no</b> <i>html root</i>
5
Salida:<b>no</b> <i>ht</i>
Entrada: <b>no img</b><img src="test.png" />more text
6
Salida:<b>no img</b>
Puede usar cualquier idioma y la biblioteca estándar del idioma dado. Este es el código de golf, el programa más corto gana. ¡Que te diviertas!
<
y en>
lugar de<>
, así que no (<
o>
tampoco estará presente).<i>ab</i><b>cd</b> 1
?<i>a</i>
?<i>a</i><b></b>
(lo cual tiene sentido si consideras queb
también podría serdiv
oimg
.)Respuestas:
Esta respuesta ya no es válida con la última regla.
Javascript ( ES6 )
9491Sin golf:
fuente
Rebol - 252 caracteres
Ungolfed con comentarios:
Ejemplos en la consola de Rebol:
fuente
Ruby ... muy rubylike con bucles
fuente
(IE) JS - 135
function f(t,n){b=document.body;b.innerHTML=t;r=b.createTextRange();r.moveStart("character",n);r.select();r.execCommand('cut');return b.innerHTML}
Ahora me siento sucio. Pero necesito comenzar a eliminar todos esos caracteres ...Descargo de responsabilidad:
fuente