Remplacer tous les caractères en JavaScript

La fonction split + join est plus rapide que de replace en JavaScript. Il est donc préférable d’utiliser la première méthode surtout si on doit le faire de nombreuses fois.

Plus la chaine de caractères à remplacer est volumineuse, plus la différence entre les deux méthodes se creuse.

var debut = +new Date;
for(var i = 0; i < 5000;i++)
{
  var string = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
  var newString = string.split(",").join(";");
}
var fin = +new Date;
console.log("Delay = "+(fin-debut));

var debut = +new Date;
for(var i = 0; i < 5000;i++)
{
  var string = "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
  var newString = string.replace(/,/g, ';');
}
var fin = +new Date;
console.log("Delay = "+(fin-debut));


var debut = +new Date;
for(var i = 0; i < 5000;i++)
{
  var string = "a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z";
  var newString = string.split(", ").join("; ");
}
var fin = +new Date;
console.log("Delay = "+(fin-debut));


var debut = +new Date;
for(var i = 0; i < 5000;i++)
{
  var string = "a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z";
  var newString = string.replace(/, /g, '; ');
}
var fin = +new Date;
console.log("Delay = "+(fin-debut));


var debut = +new Date;
for(var i = 0; i < 5000;i++)
{
  var string = "a, | @b, | @c, | @d, | @e, | @f, | @g, | @h, | @i, | @j, | @k, | @l, | @m, | @n, | @o, | @p, | @q, | @r, | @s, | @t, | @u, | @v, | @w, | @x, | @y, | @z";
  var newString = string.split(", | @").join("; ");
}
var fin = +new Date;
console.log("Delay = "+(fin-debut));

var debut = +new Date;
for(var i = 0; i < 5000;i++)
{
  var string = "a, | @b, | @c, | @d, | @e, | @f, | @g, | @h, | @i, | @j, | @k, | @l, | @m, | @n, | @o, | @p, | @q, | @r, | @s, | @t, | @u, | @v, | @w, | @x, | @y, | @z";
  var newString = string.replace(/, \| @/g, '; ');
}
var fin = +new Date;
console.log("Delay = "+(fin-debut));

Un point est-il dans un triangle ?

En calculant avec la méthode des « produits vectoriels » :

M est dans le triangle si et seulement si les trois conditions suivantes sont vérifiées:
(vect(AB) ^ vect(AM)) . (vect(AM) ^ vect(AC)) >= 0
(vect(BA) ^ vect(BM)) . (vect(BM) ^ vect(BC)) >= 0
(vect(CA) ^ vect(CM)) . (vect(CM) ^ vect(CB)) >= 0

où ^ désigne le produit vectoriel de deux vecteurs
. désigne le produit scalaire

function produitVectoriel(p1,p2, point)
{
	return (p2.X - p1.X) * (point.Y - p1.Y) - (point.X - p1.X) * (p2.Y - p1.Y);
}

function isPointInTriangle(A, B, C, point)
{
	var result = false;
	
	if(produitVectoriel(C,A,point)*produitVectoriel(C,A,B)>=0 && 
     produitVectoriel(A,B,point)*produitVectoriel(A,B,C)>=0 && 
     produitVectoriel(C,B,point)*produitVectoriel(C,B,A)>=0)
	{
		result = true;
	}
	
	return result;
}


var A = {X: 1,Y: 1};
var B = {X: 3,Y: 1};
var C = {X: 1,Y: 3};
var point = {X: 2,Y: 2};


isPointInTriangle(A,B,C,point);

source : lien 1, lien 2

regex is number, is float, is real, is negative, is whole number

Expression régulière « Est un nombre ». Je prends ici en compte les nombres négatifs, les nombres à virgule etc…

		^(-|)\d+((.|,)\d+|)$
	

REGEX « Est un entier »

	^(-|)\d+$
	

REGEX « est négatif »

		^-\d+((.|,)\d+|)$
	

REGEX « est positif »

		^\d+((.|,)\d+|)$
	

REGEX « est positif entier »

		^\d+$