Pregunta

Digamos que tengo la siguiente cadena:

"I am the most foo h4ck3r ever!!"

Estoy intentando escribir una función makeSpecial(foo) donde la subcadena foo estaría envuelta en un nuevo elemento span, lo que daría como resultado:

"I am the most <span class="special">foo></span> h4ck3r ever!!"

BeautifulSoup parecía el camino a seguir, pero no he podido hacerlo funcionar.

También podría pasar esto al navegador y hacerlo con javascript, pero no parece una gran idea.

Algunos consejos para esto serían realmente útiles, especialmente en Python.

¿Fue útil?

Solución

Qué tal esto:

Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> def makeSpecial(mystring, special_substr):
...     return mystring.replace(special_substr, '<span class="special">%s</span>
' % special_substr)
...
>>> makeSpecial("I am the most foo h4ck3r ever!!", "foo")
'I am the most <span class="special">foo</span> h4ck3r ever!!'
>>>

Otros consejos

Por lo que puedo decir, estás haciendo un simple reemplazo de cadena.Estás reemplazando "Foo" con "Bar Foo Bar". Así de cadena podrías usar

replace(old, new[, count])   

Devuelve una copia de la cadena con todas las apariciones de la subcadena antigua reemplazadas por nuevas.Si se proporciona el recuento de argumentos opcional, solo se reemplazan las primeras apariciones del recuento.

Entonces para ti sería:

myStr.replace("foo", "<span>foo</span>")   

Si quisieras hacerlo con javascript/jQuery, mira esta pregunta: Resalta una palabra con jQuery

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top