• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

[JS] Cut in 2 an [object Text]

Enthusiast ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Hello

I try to cut in two an object text to make two separate object?

The object contains "36-25", I try to extract the numbers in two text object for modified separately


I have dumal with the manipulations

Thank you

/************************

Bonjour

je cherche à couper en deux un object text pour en faire deux object séparé ?

l'objet contient "36-25", je cherche à extraire les chiffres dans deux object texte pour les modifié séparément

j'ai dumal avec les manipulations

Merci

TOPICS
Scripting

Views

554

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Salut,

Tu veux quoi au final ? un bloc texte avec "25", un autre avec "36" ?

(^/)

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Bonjour Obi-wan,

Le "25-36" est le résultat d'un ".findGrep()" qui me donne une [object Text], mais je dois mettre une référence croisé sur le 25 et 36.

var  xRefForm = app.activeDocument.crossReferenceFormats.item("N Para"); // Format de la referenvce

var source = app.activeDocument.crossReferenceSources.add ([object Text], xRefForm);

mais je dois faire un traitement sans perdre la sélection dans mon texte  (si je ne me trompe pas)

J'ai testé la chose suivante, qui me donne bien un [object Text] mais comme les chiffres peux être \d-\d, \d-\d\d ou même \d\d-\d\d\d, ce n'est pas le bonne solution.

var startCh = test02.characters[0];

var endCh = test02.characters[1];

var test3 = test02.characters.itemByRange(0,1);

Merci

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Plus clair ! …

Tu sembles donc vouloir trouver "25" et "36" séparément ?

(^/)

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Oui ...

J'utilise le grep suivant

var leRecherchePara = '\\b(infra|supra)\\b,\\snos?~S?\\K(\\d+)\\s?(et|-|,)?[~S|\\s]?(\\d+|s\\.)?';

qui peux me donner

\d+

\d+-\d+

\d+ et s.

pour le chiffre seul pas trop de problème à mon avis, pour le "25 et s." là, non plus je ne devrais pas avoir trop de problème.

mais je ne parviens pas à décomposé l'objet en deux objet.

Si non, je pence à mettre un style de caractère sur les chiffre et puis retiré tous ce qui n'est pas un numéro

app.findGrepPreferences = NothingEnum.nothing;

            app.changeGrepPreferences = NothingEnum.nothing;

            with (app.findGrepPreferences){

                findWhat = "[^0-9]";

                  //appliedCharacterStyle = 'TDM Folio'; // Pour test 'Rouge'

                  appliedCharacterStyle = 'xxxx';//

            } // fin

            with (app.changeGrepPreferences){

                appliedCharacterStyle = '[No character style]';

            } // fin

           app.activeDocument.changeGrep();;

Mais c'est pas très pro ! non?

Merci

😉

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Peux-tu me donner quelques lignes de texte d'exemple ?

Commentaire: D'après ton code Grep, tu recherches par ex. :

"blablabla, infra, nos 25-26." ou "blablabla, infra, nos 25, 26 et 27."

Si tu veux attraper "25", puis "26" (puis – 2e ex. – "27"), tu pourrais avoir besoin de "\G"!

(^/)

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Voici "Cf. infra, nos 5-6."

Capture d’écran 2017-02-15 à 15.15.04.png

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Je travail beaucoup par étape (et beaucoup de test) voici le code de cette étape :

#target "indesign-12.064"

/***********************************

    // variable globale

*************************************/

var leRecherchePara = '\\b(infra|supra)\\b,\\snos?~S?\\K(\\d+)\\s?(et|-|,)?[~S|\\s]?(\\d+|s\\.)?';

  

// fais dans le CC2017 dois être compatible avec le CC2017

main()

function main() {

// problème quand du deux chiffre  avec style de caractaire ???

// problème dans certin cas les chiffres ne change pas????

    if (app.documents.length > 0){ // IF 01

            laRecheche (app.activeDocument);

        } else {

            alert("Ouvrir un document et selectioné votre text.");

    } // fin du IF 01

}//

// Fin du main

function laRecheche(leDocSource) {

      

        

      app.findGrepPreferences = NothingEnum.nothing;

      app.changeGrepPreferences = NothingEnum.nothing;

    

        with (app.findGrepPreferences){

                findWhat = leRecherchePara; // la commande de la recheche

        } // fin

        var lesSupraInfra = leDocSource.findGrep();

      

        for (var i = 0 ; i < lesSupraInfra.length; i++ ) {

                    

            maTransformation2(lesSupraInfra);

      

        }

      app.findGrepPreferences = NothingEnum.nothing;

      app.changeGrepPreferences = NothingEnum.nothing;

  }//

function maTransformation2(laRecheche) {

    var rech2 = /[^\d]/g;

    //var trouve = laRecheche.replace(rech, '6');

    //-> laRecheche.characters[0].contents = '6' // travaille toujour sur la recherche  la mdification saplique dans Id

    //$.writeln(laRecheche.contents);

    // var trouvé = laRecheche.contents.match(rech2);

    //$.writeln(trouvé);

    if (laRecheche.contents.match(rech2) != null) {

      var rech = /(\d+)/g;

      var test02 = laRecheche;

      // test02.insertionPoints.item(0).contents = '9'

  // var test3 = test02.characters.itemByRange(startCh,endCh);

        try {

                var startCh = test02.characters.item(0);

                var endCh = test02.characters.item(3);

                var test3 = test02.characters.itemByRange(startCh,endCh);

                $.writeln( test3.contents);

          }

      catch(e) {

          $.writeln( 'Null : '  + e);

          }

    }

}//

//

function maTransformation(laRecheche) {

    var rech = /(\d+)/g;

    var rech2 = /[^\d]/g;

    //var trouve = laRecheche.replace(rech, '6');

    //-> laRecheche.characters[0].contents = '6' // travaille toujour sur la recherche  la mdification saplique dans Id

    $.writeln(laRecheche.contents);

    // var trouvé = laRecheche.contents.match(rech2);

    //$.writeln(trouvé);

  

    if (laRecheche.contents.match(rech2) != null) {

        var test01 = laRecheche.toSource ();

        var test02 = laRecheche;

      // test02.insertionPoints.item(0).contents = '9'

      

        var startCh = test02.characters[0];

        var endCh = test02.characters[1];

        $.writeln( endCh.contents);

  // var test3 = test02.characters.itemByRange(startCh,endCh);

        var test3 = test02.characters.itemByRange(0,1);

        $.writeln( test3.contents);

        }

    }//

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

J'ai réécrit ton code Grep! Le mien trouve tous les chiffres dans ton contexte de footnotes.

À valider (écrit rapidement) :

(Cf.~S(infra|supra), nos?~S|\G)(-?|, | et )\K\d+

Mais il ne trouvera pas le "2" et 2017" dans :

Cf. infra, nos 25, 36 et 38. 2 articles en 2017.

(^/) 

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Merci je teste, qu'elle est la signification de "\G" en français

j'ai lu "\G (start of match attempt)" -> "\ G (début de la tentative de match)" ???

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Pour être clair : Personne n'utilise "\G" parce que personne n'y comprend rien ! 

Pour essayer de simplifier, le code recherche un nombre "\d+" dans un certain contexte "…\K".

Ce contexte originel est d'abord : "(Cf.~S(infra|supra), nos?~S)\K"

S'il en trouve un, il recherche le suivant grâce à "\G" mais là il introduit ces 2 nouveaux arguments que : "(Cf.~S(infra|supra), nos?~S)" n'a pas besoin d'exister (il le peut !) et le 2e catch sera, juste après le premier, complêté par : "(-?|, | et )" et ainsi de suite … Tant qu'il trouve cet environnement, il "catches" ! mais toujours avec cette arrière-pensée que le contexte originel peut réapparaître ! …

[ Bref, tout à fait limpide ! N'est-ce pas !?… Je suis un très mauvais prof. ! Désolé ! ]

(^/)

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Merci pour cette explication ... à méditer et a pratiquer !!!

Je vous tiens au courant de l’avancement du script .

Merci

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Après quelque test de réglage ... Oups!  la ligne du grep trouve le tous première chiffre  4 qui est le tous premier caractère ...

Capture d’écran 2017-02-15 à 20.41.27.png

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
LEGEND ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

Est-ce à dire que tu ne cibles pas seulement les footnotes ?

Est-ce à dire que tu n'utilises pas ici de num auto?

Tu peux toujours exclure ce genre de situation en "exigeant" un caractère après :

(Cf.~S(infra|supra), nos?~S|\G)(-?|, | et )\K\d+(?=.)

Cela t'évitera ce cas de figure et la problématique des "tableaux à chiffres".

Ne voyant pas ton fichier, ce n'est pas évident d'inventorier toutes les exclusions! 

(^/)

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Enthusiast ,
Feb 15, 2017 Feb 15, 2017

Copy link to clipboard

Copied

LATEST

Oui, je cherche sur tous le document, ce numéro n'est pas automatique, c'est dure de voir tous les cas.

'J'ai placer un 5 dans la mise en page comme tu peux voir sur l'image, il ne le trouve pas la, ça me semble logique.

Dans le grep on  a place "nos?" pour le \K, c'est le \G qui le fais passer ? Et pour quoi le 4 et pas le 5?

Sans ficher c'est compliqué, on n'est jamais asse prédit, je suis tous les jours dans le job.

un très grand merci pour toutes ces infos.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines