Je participe à l'un des concours Code Golf où plus la taille de votre fichier est petite, mieux c'est. Plutôt que de supprimer manuellement tous les espaces, etc., je recherche un programme ou un site Web qui prendra un fichier, supprimera tous les espaces (y compris les nouvelles lignes) et retournera une version compacte du fichier. Des idées?Le moyen le plus facile de supprimer tous les espaces d'un fichier de code?
Répondre
Vous pouvez utiliser:
sed 's/\s\s+/ /g' youfile > yourpackedfile`
Il y a aussi this online tool.
Vous pouvez même le faire en PHP (comment merveilleux est la vie):
$data = file_get_contents('foobar.php');
$data = preg_replace('/\s\s+/', ' ', $data);
file_put_contents('foobar2.php', $data);
Vous devez noter que ce ne sera pas prendre soin d'une variable de chaîne comme $bar = ' asd aa a';
il pourrait être un problème en fonction de ce que vous faites. L'outil en ligne semble gérer cela correctement.
Dans PowerShell (v2) cela peut être fait avec le petit bout de code suivant:
(-join(gc my_file))-replace"\s"
ou plus:
(-join (Get-Content my_file)) -replace "\s"
Il se joindra à toutes les lignes ensemble et supprimer tous les espaces et les onglets.
Cependant, pour certaines langues, vous ne voulez probablement pas faire cela. Dans PowerShell par exemple, vous n'avez pas besoin des points-virgules, sauf si vous mettez plusieurs instructions sur une seule ligne de code comme si
while (1) {
"Hello World"
$x++
}
deviendrait
while(1){"HelloWorld"$x++}
lors de l'application des déclarations susmentionnées ingénument. Cela a changé la signification et la correction syntaxique du programme. Probablement pas trop à chercher dans les solutions golfiques numériques mais le problème avec les lignes réunies reste malheureusement, malheureusement. Le simple fait de placer un point-virgule entre chaque ligne n'aide pas non plus.
$ tr -d ' \n' <oldfile >newfile
Si vos programmes éditeur de code prend en charge regular expressions, vous pouvez essayer ceci:
Find this: [\r\n]{2,}
Replace with this: \n
Then Replace All
Notepad++ est un très bel éditeur si vous êtes sous Windows, et il a beaucoup de macros prédéfinies, coupe vers le bas code et en supprimant les espaces entre eux.
Il peut faire des expressions régulières et a une pléthore de fonctionnalités pour aider le code hacker ou script kiddie.
Run php -w
sur elle! Contrairement à une expression régulière, elle est suffisamment intelligente pour laisser les chaînes seules et elle supprime également les commentaires.
C'est une fonction PHP qui fera le travail pour vous:
function compress_php_src($src) {
// Whitespaces left and right from this signs can be ignored
static $IW = array(
T_CONCAT_EQUAL, // .=
T_DOUBLE_ARROW, // =>
T_BOOLEAN_AND, // &&
T_BOOLEAN_OR, // ||
T_IS_EQUAL, // ==
T_IS_NOT_EQUAL, // != or <>
T_IS_SMALLER_OR_EQUAL, // <=
T_IS_GREATER_OR_EQUAL, // >=
T_INC, // ++
T_DEC, // --
T_PLUS_EQUAL, // +=
T_MINUS_EQUAL, // -=
T_MUL_EQUAL, // *=
T_DIV_EQUAL, // /=
T_IS_IDENTICAL, // ===
T_IS_NOT_IDENTICAL, // !==
T_DOUBLE_COLON, // ::
T_PAAMAYIM_NEKUDOTAYIM, // ::
T_OBJECT_OPERATOR, // ->
T_DOLLAR_OPEN_CURLY_BRACES, // ${
T_AND_EQUAL, // &=
T_MOD_EQUAL, // %=
T_XOR_EQUAL, // ^=
T_OR_EQUAL, // |=
T_SL, // <<
T_SR, // >>
T_SL_EQUAL, // <<=
T_SR_EQUAL, // >>=
);
if(is_file($src)) {
if(!$src = file_get_contents($src)) {
return false;
}
}
$tokens = token_get_all($src);
$new = "";
$c = sizeof($tokens);
$iw = false; // Ignore whitespace
$ih = false; // In HEREDOC
$ls = ""; // Last sign
$ot = null; // Open tag
for($i = 0; $i < $c; $i++) {
$token = $tokens[$i];
if(is_array($token)) {
list($tn, $ts) = $token; // tokens: number, string, line
$tname = token_name($tn);
if($tn == T_INLINE_HTML) {
$new .= $ts;
$iw = false;
}
else {
if($tn == T_OPEN_TAG) {
if(strpos($ts, " ") || strpos($ts, "\n") || strpos($ts, "\t") || strpos($ts, "\r")) {
$ts = rtrim($ts);
}
$ts .= " ";
$new .= $ts;
$ot = T_OPEN_TAG;
$iw = true;
} elseif($tn == T_OPEN_TAG_WITH_ECHO) {
$new .= $ts;
$ot = T_OPEN_TAG_WITH_ECHO;
$iw = true;
} elseif($tn == T_CLOSE_TAG) {
if($ot == T_OPEN_TAG_WITH_ECHO) {
$new = rtrim($new, "; ");
} else {
$ts = " ".$ts;
}
$new .= $ts;
$ot = null;
$iw = false;
} elseif(in_array($tn, $IW)) {
$new .= $ts;
$iw = true;
} elseif($tn == T_CONSTANT_ENCAPSED_STRING
|| $tn == T_ENCAPSED_AND_WHITESPACE)
{
if($ts[0] == '"') {
$ts = addcslashes($ts, "\n\t\r");
}
$new .= $ts;
$iw = true;
} elseif($tn == T_WHITESPACE) {
$nt = @$tokens[$i+1];
if(!$iw && (!is_string($nt) || $nt == '$') && !in_array($nt[0], $IW)) {
$new .= " ";
}
$iw = false;
} elseif($tn == T_START_HEREDOC) {
$new .= "<<<S\n";
$iw = false;
$ih = true; // in HEREDOC
} elseif($tn == T_END_HEREDOC) {
$new .= "S;";
$iw = true;
$ih = false; // in HEREDOC
for($j = $i+1; $j < $c; $j++) {
if(is_string($tokens[$j]) && $tokens[$j] == ";") {
$i = $j;
break;
} else if($tokens[$j][0] == T_CLOSE_TAG) {
break;
}
}
} elseif($tn == T_COMMENT || $tn == T_DOC_COMMENT) {
$iw = true;
} else {
if(!$ih) {
$ts = strtolower($ts);
}
$new .= $ts;
$iw = false;
}
}
$ls = "";
}
else {
if(($token != ";" && $token != ":") || $ls != $token) {
$new .= $token;
$ls = $token;
}
$iw = true;
}
}
return $new;
}
// This is an example
$src = file_get_contents('foobar.php');
file_put_contents('foobar3.php',compress_php_src($src));
- 1. Le moyen le plus facile d'apprendre l'unité
- 2. Le moyen le plus rapide de mettre à jour les espaces de noms avec ReSharper?
- 3. moyen le plus facile de centrer une image dans Silverlight?
- 4. Un moyen facile de supprimer les espaces de noms XML avec JavaScript?
- 5. regex jquery supprimer tous les espaces doubles
- 6. Le moyen le plus facile de cacher (certains) les plugins WordPress des utilisateurs?
- 7. Supprimer tous les espaces dans QGridLayout
- 8. Le moyen le plus facile d'analyser les données de twitter avec Cocoa
- 9. Le moyen le plus efficace de supprimer tous les caractères de la 1ère chaîne de la 2ème chaîne?
- 10. Le moyen le plus rapide pour supprimer un arbre de répertoires dans un fichier batch
- 11. Supprimer tous les commentaires du fichier de code source VB.NET
- 12. le moyen le plus facile de télécharger des données mises à jour sur le serveur
- 13. Java Code impossible de supprimer le fichier
- 14. Le moyen le plus rapide de supprimer les caractères de la chaîne
- 15. Supprimer les espaces vides du fichier
- 16. Quel est le moyen le plus facile de fusionner deux ou plusieurs fichiers pdf dans Delphi?
- 17. Supprimer les espaces de php sourcecode
- 18. Erlang - Interleave le moyen facile
- 19. Wicket et un riche site ajax: moyen le plus facile de le faire?
- 20. Le moyen le plus facile d'afficher l'état de Twitter dans Android
- 21. le moyen le plus facile de porter un jeu basé sur SDL-1.2 à l'iPhone
- 22. Quel est le moyen le plus rapide de supprimer les éléments enfants du DOM dans IE?
- 23. moyen plus facile d'évaluer une chaîne à partir du fichier?
- 24. Le moyen le plus simple de vérifier les numéros
- 25. Le moyen le plus facile de partager sur facebook, twitter et par e-mail?
- 26. Le moyen le plus facile de charger le vidage de la table dans la base de données
- 27. supprimer les espaces de variables
- 28. Un moyen facile de modifier la barre de progression dans le code Delphi existant?
- 29. Quel est le moyen le plus simple pour télécharger et compiler tous les échantillons de wxWidgets?
- 30. Le moyen le plus simple d'empêcher tous les threads Java de disparaître dans IO?
cela dépend de votre langue, mais 'sed' pourrait le faire, si vous voulez supprimer seulement l'espace – RageZ
J'utilise PHP et en utilisant Windows pour le développement, je le veux pour supprimer whitepsace ainsi que les nouvelles lignes –
Linux: fichier rm Windows: del fichier. Tous les espaces supprimés (certains autres caractères aussi, mais nulle part il est dit que vous devez les garder) –