¿Cómo puedo extraer "456" de "xxx_456" donde xxx es de longitud indefinida?Subcadena con índice inverso
Respuesta
var str = "xxx_456"; var str_sub = str.substr(str.lastIndexOf("_")+1);
Si no siempre es tres dígitos en el final (y separado por un guión bajo). Si el delimitador final no es siempre un guión bajo, entonces se podría utilizar expresiones regulares:
var pat = /([0-9]{1,})$/; var m = str.match(pat);
+1 lastIndexOf es exactamente lo que quiere aquí, más rápido que regex y más flexible que substr. –
@Phil: no es mucho más rápido, a menos que se lo llame miles de veces. Tendrás que llamarlos millones de veces antes de que la diferencia sea notable. – outis
El método substring le permite especificar comenzar y el índice final:
var str = "xxx_456";
var subStr = str.substring(str.length - 3, str.length);
alert("xxxxxxxxxxx_456".substr(-3))
advertencia: de acuerdo a mdc, es decir, no es compatible
pero 'slice' es - ver mi respuesta. –
una expresión regular loca enfoque
"xxx_456".match(/...$/)[0] //456
también podría ser 'xxx_456'.match (/_.+$/) [0] o' xxx_456'.replace (/(^.+_)(.+$)/,'$ 1 ')? – KooiInc
@Kooilnc: no es necesario complicar demasiado las expresiones regulares solo porque puede. Su primer ejemplo también coincidiría con el '_'. –
@Andy E: tienes razón sobre el _. Segunda posibilidad: $ 1 debería ser $ 2 por cierto. – KooiInc
sólo puede dividirlo y obtener el último elemento
var string="xxx_456";
var a=string.split("_");
alert(a[1]); #or a.pop
+1, habría proporcionado el método split-pop en mi propia respuesta si no lo hubiera mencionado :-) –
slice
funciona bien en IE y otros navegadores, es parte de la especificación y también es el método más eficiente:
alert("xxx_456".slice(-3));
//-> 456
slice Method (String) - MSDN
slice - Mozilla Developer Center
aquí es mi función personalizada
function reverse_substring(str,from,to){
var temp="";
var i=0;
var pos = 0;
var append;
for(i=str.length-1;i>=0;i--){
//alert("inside loop " + str[i]);
if(pos == from){
append=true;
}
if(pos == to){
append=false;
break;
}
if(append){
temp = str[i] + temp;
}
pos++;
}
alert("bottom loop " + temp);
}
var str = "bala_123";
reverse_substring(str,0,3);
Esta función se puede utilizar para el índice inverso.
expresión regular simple para cualquier número de dígitos al final de una cadena:
'xxx_456'.match(/\d+$/)[0]; //456
'xxx_4567890'.match(/\d+$/)[0]; //4567890
o utilizar split/pop de hecho:
('yyy_xxx_45678901').split(/_/).pop(); //45678901
String.prototype.reverse() {
return Array.prototype.slice.call(this)
.reverse()
.join()
.replace(/,/g,'')
}
utilizando un método de cadena inversa
var str = "xxx_456"
str = str.reverse() // 654_xxx
str = str.substring(0,3) // 654
str = str.reverse() //456
si su método inverso devuelve el str Luego, encadena los métodos para una solución más limpia.
- 1. Java: subcadena rango de índice
- 2. subcadena de SQL y último índice de
- 3. Subcadena Java: 'cadena índice fuera de rango'
- 4. Sustituir una subcadena con otra subcadena
- 5. ¿El primer índice de la lista contiene una subcadena?
- 6. Último índice de una subcadena dada en MySQL
- 7. sesiones express.js con proxy inverso
- 8. Problema con la subcadena() - ArgumentOutOfRangeException
- 9. dijit.form.FilteringSelect con búsqueda de subcadena
- 10. ¿Subcadena con rango fuera de límites?
- 11. lighttpd como proxy inverso
- 12. Subcadena en VBA
- 13. Subcadena de Excel VBA
- 14. Proxy inverso
- 15. ¿Cómo contar inverso con para en php?
- 16. Scala: resultado inverso al escapar subrayado con :::
- 17. Proxy inverso con aplicaciones de google?
- 18. mapeo inverso del diccionario con Python
- 19. Apache proxy inverso con autenticación básica
- 20. ¿Tiene NumPy un inverso de unravel_index()?
- 21. Cadena anterior último índice
- 22. Manillar - subcadena
- 23. Cómo crear un índice inverso para la búsqueda de texto completo en Common Lisp?
- 24. mal sustitución Bash con subnivel y subcadena
- 25. Obtener subcadena con la expresión regular
- 26. Inverso de jQuery.extend (true, ...)
- 27. Retransmisor de flujo inverso
- 28. copiando una subcadena de una cadena dado índice final en la cadena
- 29. C# - Subcadena: índice y la longitud deben hacer referencia a una ubicación dentro de la cadena
- 30. inverso de COALESCE
Esta pregunta sería mucho más útil si se expresara de forma general: "¿Cómo puedo extraer el final de una cadena después de la última aparición de un delimitador dado?". –