2017-10-18 2 views

Répondre

2

Pour remplacer chaque personnage, vous pouvez assembler tous les personnages superscript dans un chaîne ordonnée (de sorte que est à l'index 0, ¹ est à l'indice 1, etc.) et d'obtenir leur chiffre correspondant par indexOf:

function digitFromSuperscript(superChar) { 
    var result = "⁰¹²³⁴⁵⁶⁷⁸⁹".indexOf(superChar); 
    if(result > -1) { return result; } 
    else { return superChar; } 
} 

Vous pouvez ensuite exécuter chaque personnage dans votre chaîne par cette fonction. Par exemple, vous pouvez le faire par un rappel replace:

"n⁵".replace(/./g, digitFromSuperscript) 

Ou de façon plus optimale, limiter le remplacer à considérer que des caractères: superscript

"n⁵".replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹]/g, digitFromSuperscript) 
+0

@searlea vous avez raison, désolé. Je l'ai supprimé quand je l'ai repéré. C'est une bonne réponse quel que soit – Ross

+0

Merci mon pote, c'est une solution propre –

+0

la question dit "par exemple" mais dit aussi "numéro" donc je pense que la réponse de @ apsillers marcherait. C'est mieux que le mien, j'allais dire, '" 5 ".charCodeAt (0) = unicode 53 String.fromCharCode (8309) = ⁵' donc juste besoin d'ajouter/soustraire 8256 du code uni pour changer entre. :) – ashleedawg

2

Rien de spécial: vous pouvez remplacer le caractère par le caractère 5.

var result = "n⁵".replace("⁵", "5"); 
 

 
console.log(result);

+0

Oui ceci. Pour autant que je sache, il n'y a pas de méthode inverse pour .sup(), donc vous devrez analyser manuellement le texte et faire un remplacement pour chaque chiffre (0-9) pour obtenir une chaîne avec laquelle vous pouvez travailler. – delinear

1

Vous pouvez utiliser le remplacement regex avec une fonction de remplacement:

function replaceSupers(str) { 
 
    var superMap = { 
 
    '⁰': '0', 
 
    '¹': '1', 
 
    '²': '2', 
 
    '³': '3', 
 
    '⁴': '4', 
 
    '⁵': '5', 
 
    '⁶': '6', 
 
    '⁷': '7', 
 
    '⁸': '8', 
 
    '⁹': '9' 
 
    } 
 

 
    return str.replace(/[⁰¹²³⁴⁵⁶⁷⁸⁹]/g, function(match) { 
 
    return superMap[match]; 
 
    }); 
 
} 
 

 
console.log(replaceSupers('a¹²n⁴⁵lala⁷⁸⁹'));