2009-11-10 21 views
17

Say, tengo una cadenacortar parte de una cadena

"hello is it me you're looking for" 

quiero cortar parte de esta cadena y devuelva la nueva cadena, algo así como

s = string.cut(0,3); 

s ahora sería igual a:

"lo is it me you're looking for" 

EDITAR: puede que no sea de 0 a 3. podría ser de 5 a 7.

s = string.cut(5,7); 

regresarían

"hellos it me you're looking for" 
+0

Sólo por curiosidad ... el String.substr() método parece funcionar para la mayoría de los escenarios que encuentro - sin embargo, parecen tener una necesidad de quitar un poco cadena "media" - ¿tiene una muestra del caso del "mundo real" donde esto ocurre regularmente? – scunliffe

+0

¿Por qué no cortaría 0-2 y 5-6 en su lugar? – dlamblin

Respuesta

27

Ya casi está allí. Lo que queremos es:

http://www.w3schools.com/jsref/jsref_substr.asp

Así, en su ejemplo:

Var string = "hello is it me you're looking for"; 
s = string.substr(3); 

Como única que proporciona un comienzo (el primer argumento) lleva desde ese índice hasta el final de la cadena.

actualización, ¿qué tal algo como:

function cut(str, cutStart, cutEnd){ 
    return str.substr(0,cutStart) + str.substr(cutEnd+1); 
} 
+1

Esta función tiene un problema con los saltos de línea, sugiero usar subcadena y no substr como se aconseja a continuación devolver this.substring (0, cutStart) + this.substring (cutEnd); –

3

String.substring() es lo que desea.

6

Uso

substring

función

Devuelve un subconjunto de una cadena entre un índice y otro, o hasta el final de la cadena .

substring(indexA, [indexB]); 

indiceA

An integer between 0 and one less than the length of the string. 

indiceB (opcional) Un entero entre 0 y la longitud de la cadena.

subcadena extrae los caracteres de indexA hasta pero no incluye indexB. En particular:

* If indexA equals indexB, substring returns an empty string. 
* If indexB is omitted, substring extracts characters to the end 
    of the string. 
* If either argument is less than 0 or is NaN, it is treated as if 
    it were 0. 
* If either argument is greater than stringName.length, it is treated as 
    if it were stringName.length. 

Si indiceA es mayor que indiceB, entonces el efecto de subcadena es como si se intercambian los dos argumentos; por ejemplo, str.substring (1, 0) == str.substring (0, 1).

0

intente lo siguiente:

var str="hello is it me you're looking for"; 
document.write(str.substring(3)+"<br />"); 

Puede comprobar this link

4
s = string.cut(5,7); 

preferiría hacerlo como una función separada, pero si realmente quiere ser capaz de llamarlo directamente en una cadena a partir del prototipo:

String.prototype.cut= function(i0, i1) { 
    return this.substring(0, i0)+this.substring(i1); 
} 
+0

Esto es javascript? subcadena – user956584

1

Así como una referencia para cualquiera que busque función similar, tengo un String.prot otype.bisect aplicación que divide una cadena de 3 maneras usando una expresión regular/delimitador de cadena y devuelve el antes, por delimitadores partido y después de partes de la cadena ....

/* 
     Splits a string 3-ways along delimiter. 
     Delimiter can be a regex or a string. 
     Returns an array with [before,delimiter,after] 
*/ 
String.prototype.bisect = function(delimiter){ 
    var i,m,l=1; 
    if(typeof delimiter == 'string') i = this.indexOf(delimiter); 
    if(delimiter.exec){ 
    m = this.match(delimiter); 
    i = m.index; 
    l = m[0].length 
    } 
    if(!i) i = this.length/2; 
    var res=[],temp; 
    if(temp = this.substring(0,i)) res.push(temp); 
    if(temp = this.substr(i,l)) res.push(temp); 
    if(temp = this.substring(i+l)) res.push(temp); 
    if(res.length == 3) return res; 
    return null; 
}; 

/* though one could achieve similar and more optimal results for above with: */ 

"my string to split and get the before after splitting on and once".split(/and(.+)/,2) 

// outputs => ["my string to split ", " get the before after splitting on and once"] 

como se indica aquí: https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String/split

Si el separador es una expresión regular que contiene paréntesis de captura, cada separador de tiempo coincide, los resultados (incluidos los resultados no definidos) de los paréntesis de captura se empalman en la matriz de salida. Sin embargo, no todos los navegadores admiten esta capacidad.

2

Algunas otras alternativas más modernas son:

  1. Dividir y unir

    function cutFromString(oldStr, fullStr) { 
        return fullStr.split(oldStr).join(''); 
    } 
    cutFromString('there ', 'Hello there world!'); // "Hello world!" 
    

    Adaptado de MDN example

  2. String.replace(), que utiliza expresiones regulares. Esto significa que puede ser más flexible con la distinción entre mayúsculas y minúsculas.

    function cutFromString(oldStrRegex, fullStr) { 
        return fullStr.replace(oldStrRegex, ''); 
    } 
    cutFromString(/there /i , 'Hello THERE world!'); // "Hello world!" 
    
Cuestiones relacionadas