[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt RegExp per Script (CS5, WIN)

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

RegExp per Script (CS5, WIN)

cwenet
Beiträge gesamt: 1092

20. Okt 2010, 06:31
Beitrag # 1 von 7
Bewertung:
(2386 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

hiermit wollte ich den Dateinamen säubern.
Will mir aber nicht gelingen. Sind Festwerte hier garnicht möglich?

Code
var myRegExp = new RegExp("~s","gi"); 
myPageName = myNiceFileName.replace(myRegExp, '');


Gruss
Christoph
X

RegExp per Script (CS5, WIN)

Martin Fischer
  
Beiträge gesamt: 12691

20. Okt 2010, 09:15
Beitrag # 2 von 7
Beitrag ID: #454603
Bewertung:
(2365 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

versuch's mal mit \\s statt mit ~s


als Antwort auf: [#454591]

RegExp per Script (CS5, WIN)

cwenet
Beiträge gesamt: 1092

20. Okt 2010, 11:02
Beitrag # 3 von 7
Beitrag ID: #454627
Bewertung:
(2348 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Martin,

danke; hat aber leider nicht funktioniert.
Ich zeige Dir mal das ganze Script. Vielleicht gehe ich das auch falsch an:

Code
if(app.documents.length != 0){   
var myFolder = Folder.selectDialog ("Choose a destination folder");
if(myFolder != null){
var myDocument = app.activeDocument;
var myItems, myDocumentName, myBaseName, myPDFPreset;

displayDialog();
}
}
else{
alert("Please open a document and try again.");
}

function findItems() {
//Clear the find/change preferences.
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;
//Set the find options.
app.findChangeTextOptions.caseSensitive = false;
app.findChangeTextOptions.includeFootnotes = false;
app.findChangeTextOptions.includeHiddenLayers = false;
app.findChangeTextOptions.includeLockedLayersForFind = false;
app.findChangeTextOptions.includeLockedStoriesForFind = false;
app.findChangeTextOptions.includeMasterPages = false;
app.findChangeTextOptions.wholeWord = false;

app.findTextPreferences.appliedParagraphStyle = "Nummer";
app.findTextPreferences.findWhat = "";
myItems = myDocument.findText();

//Clear the find/change preferences after the search.
app.findTextPreferences = NothingEnum.nothing;
app.changeTextPreferences = NothingEnum.nothing;

// Export the pages
exportPages();
}

function exportPages() {
for (var i = 0; i < myItems.length; i++) {
var myPage = findPage(myItems[i]);

var myPageName = myPage.name;
app.pdfExportPreferences.pageRange = myPageName;

var myNiceFileName = myItems[i].lines[0].contents; // only get first line, add a string replace() around to remove illigal chars or reg expr
//alert(myNiceFileName);

var myRegExp = new RegExp("\\s","gi");
myPageName = myNiceFileName.replace(myRegExp, '');
var myRegExp = new RegExp(" ","gi");
myPageName = myNiceFileName.replace(myRegExp, '');
var myRegExp = new RegExp("x","gi");
myPageName = myNiceFileName.replace(myRegExp, '');

//var myFilePath = myFolder + "/" + myBaseName + "_" + myNiceFileName + ".pdf";
var myFilePath = myFolder + "/" + myPageName + ".pdf";
var myExportFile = new File(myFilePath);
myDocument.exportFile(ExportFormat.pdfType, myExportFile, false, myPDFPreset);
}
}

function findPage(theObj) {
if (theObj.hasOwnProperty("baseline")) {
theObj = theObj.parentTextFrames[0];
}
while (theObj != null) {
if (theObj.hasOwnProperty ("parentPage")) return theObj.parentPage;
var whatIsIt = theObj.constructor;
switch (whatIsIt) {
case Page : return theObj;
case Character : theObj = theObj.parentTextFrames[0]; break;
case Footnote :; // drop through
case Cell : theObj = theObj.insertionPoints[0].parentTextFrames[0]; break;
case Note : theObj = theObj.storyOffset; break;
case Application : return null;
}
if (theObj == null) return null;
theObj = theObj.parent;
}
return theObj
} // end findPage

function displayDialog() {
myDocumentName = myDocument.name;
var myPDFPresets = app.pdfExportPresets;
var myPDFPresetNames = new Array;
for (i = 0; i < myPDFPresets.length; i++) {
myPDFPresetNames.push(myPDFPresets[i].name);
}

var myDialog = app.dialogs.add();
with(myDialog.dialogColumns.add()){
with(dialogRows.add()){
with(dialogColumns.add()) {
staticTexts.add({staticLabel:"Base name:", minWidth:130});
}
with(dialogColumns.add()) {
var myBaseNameField = textEditboxes.add({editContents:myDocumentName, minWidth:160});
}
}
with(dialogRows.add()){
with(dialogColumns.add()){
staticTexts.add({staticLabel:"PDF preset: ", minWidth:130});
}
with(dialogColumns.add()){
var myPDFPresetsDropdown = dropdowns.add({stringList:myPDFPresetNames, selectedIndex:0});
}
}
}
var myResult = myDialog.show({name:"ExportPages"});
if(myResult == true){
myBaseName = myBaseNameField.editContents;
myPDFPreset = myPDFPresetNames[myPDFPresetsDropdown.selectedIndex];
findItems();
//Remove the dialog box from memory.
myDialog.destroy();
} else{
myDialog.destroy();
}
}


Das einzige was funktioniert, wenn ein x vorkommt.
Das geschützte Leerzeichen und das normale Leerzeichen bleiben stehen.

Hast Du bitte noch eine Idee?

Gruss
Christoph


als Antwort auf: [#454603]

RegExp per Script (CS5, WIN)

Neil77
Beiträge gesamt: 287

20. Okt 2010, 11:14
Beitrag # 4 von 7
Beitrag ID: #454630
Bewertung:
(2343 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Christoph,

du gehtst ja mehrfach von deinem Originalwert myNiceFileName aus, statt von dem bereits korrigierten.
Funktioniert es so (in der function ExportPages)?
Code
var myRegExp = new RegExp("\\s","gi");  
myPageName = myNiceFileName.replace(myRegExp, '');
myRegExp = new RegExp(" ","gi");
myPageName = myPageName.replace(myRegExp, '');
myRegExp = new RegExp("x","gi");
myPageName = myPageName.replace(myRegExp, '');

(Wobei ich mir auf die Schnelle mit deiner Verwendung myPageName/myNiceFileName nicht ganz klar bin)

Grüße, Martin


als Antwort auf: [#454627]

RegExp per Script (CS5, WIN)

Martin Fischer
  
Beiträge gesamt: 12691

20. Okt 2010, 11:19
Beitrag # 5 von 7
Beitrag ID: #454631
Bewertung:
(2340 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

verstehe ich nicht.

Verkürze mal den Code

Code
            var myRegExp = new RegExp("\\s","gi");  
myPageName = myNiceFileName.replace(myRegExp, '');
var myRegExp = new RegExp(" ","gi");
myPageName = myNiceFileName.replace(myRegExp, '');
var myRegExp = new RegExp("x","gi");
myPageName = myNiceFileName.replace(myRegExp, '');


auf
Code
            var myRegExp = new RegExp("\\s","gi");  
myPageName = myNiceFileName.replace(myRegExp, '');
//~ var myRegExp = new RegExp(" ","gi");
//~ myPageName = myNiceFileName.replace(myRegExp, '');
//~ var myRegExp = new RegExp("x","gi");
//~ myPageName = myNiceFileName.replace(myRegExp, '');
alert ('Result\rmyNiceFileName:\t' + myNiceFileName + '\rmyPageName:\t' + myPageName);


edit:
Martin war schneller.
Sollte aber auf was Ähnliches hinauslaufen.


als Antwort auf: [#454627]
(Dieser Beitrag wurde von Martin Fischer am 20. Okt 2010, 11:20 geändert)

RegExp per Script (CS5, WIN)

chris33
Beiträge gesamt: 189

20. Okt 2010, 11:24
Beitrag # 6 von 7
Beitrag ID: #454632
Bewertung:
(2334 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Code
            var myRegExp = new RegExp("\\s","gi");  
myPageName = myNiceFileName.replace(myRegExp, '');
var myRegExp = new RegExp(" ","gi");
myPageName = myNiceFileName.replace(myRegExp, '');
var myRegExp = new RegExp("x","gi");
myPageName = myNiceFileName.replace(myRegExp, '');


Christoph, du überschreibst ja jeweils myPageName, so kann das nicht gehen, denk ich. ich täte:

myPageName = myNiceFileName.replace(/\s/g, '');
myPageName =myPageName.replace(/x/gi, '');

mann, seid ihr schnell;)


als Antwort auf: [#454627]
(Dieser Beitrag wurde von chris33 am 20. Okt 2010, 11:26 geändert)

RegExp per Script (CS5, WIN)

cwenet
Beiträge gesamt: 1092

20. Okt 2010, 20:02
Beitrag # 7 von 7
Beitrag ID: #454685
Bewertung:
(2284 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank an die zahlreichen Wortmeldungen,

ich hab mich dann für die Lösung von Chris entschieden.
Jetzt klappt es.


Gruss
Christoph


als Antwort auf: [#454632]
X