119 votes

divise une chaîne de caractères en deux à l'indice donné et retourne les deux parties.

J'ai une chaîne de caractères que je dois diviser sur un indice donné, puis renvoyer les deux parties, séparées par une virgule. Par exemple :

string: 8211 = 8,211
        98700 = 98,700

J'ai donc besoin de pouvoir diviser la chaîne de caractères sur n'importe quel index donné, puis de retourner les deux moitiés de la chaîne. Les méthodes intégrées semblent effectuer la division mais ne renvoient qu'une partie de la division.

string.slice ne renvoie que la partie extraite de la chaîne. string.split permet uniquement de séparer sur un caractère et non sur un index. string.substring fait ce dont j'ai besoin mais ne renvoie que la sous-chaîne. string.substr est très similaire, mais ne renvoie que la sous-chaîne.

142voto

Chamika Sandamal Points 12383

Essayez ceci

function split_at_index(value, index)
{
 return value.substring(0, index) + "," + value.substring(index);
}

console.log(split_at_index('3123124', 2));

80voto

Alan R. Soares Points 1237

ES6 1-liner

// :: splitAt = (number, any[] | string) => [any[] | string, any[] | string]
const splitAt = (index, xs) => [xs.slice(0, index), xs.slice(index)]

console.log(
  splitAt(1, 'foo'), // ["f", "oo"]
  splitAt(2, [1, 2, 3, 4]) // [[1, 2], [3, 4]]
)

18voto

lonewarrior556 Points 272

Vous pouvez facilement l'étendre pour diviser sur plusieurs index, et pour prendre un tableau ou une chaîne de caractères.

const splitOn = (slicable, ...indices) =>
  [0, ...indices].map((n, i, m) => slicable.slice(n, m[i + 1]));

splitOn('foo', 1);
// ["f", "oo"]

splitOn([1, 2, 3, 4], 2);
// [[1, 2], [3, 4]]

splitOn('fooBAr', 1, 4);
//  ["f", "ooB", "Ar"]

le gestionnaire de problèmes de lodash : https://github.com/lodash/lodash/issues/3014

Dactylographié :

const splitOn: {
  <T = string>(s: T, ...i: number[]): T[];
  <T extends any[]>(s: T, ...i: number[]): T[];
} = <T>(slicable: string | T[], ...indices: number[]) =>
  [0, ...indices].map((n, i, m) => slicable.slice(n, m[i + 1]));

3voto

Vous pouvez également utiliser le formateur de nombres JS disponible à l'adresse suivante

https://code.google.com/p/javascript-number-formatter/

Options de format

http://jsfiddle.net/chauhangs/hUE3h/

  format("##,###.", 98700)
  format("#,###.", 8211)

1voto

Nathan Points 11

Quelque chose comme ça ?...

 function stringConverter(varString, varCommaPosition)
 {
   var stringArray = varString.split("");
   var outputString = '';
   for(var i=0;i<stringArray.length;i++)
   {
     if(i == varCommaPosition)
      {
        outputString = outputString + ',';
      }

     outputString = outputString + stringArray[i];
   }  

   return outputString;
 }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X