[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt GREP in string Variablen

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

GREP in string Variablen

faxinger666
Beiträge gesamt: 149

18. Nov 2020, 23:51
Beitrag # 1 von 16
Bewertung:
(6447 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
das dürfte für euch nur ein Klacks sein für mich ist es ein Berg:

Ich möchte in einem string eine grep-suche und ersetzung durchführen:

Es sollen alle Vorkommen des Rufzeichens in diesem String durch 1 ersetzt werden
Code
var _sel = app.selection[0]; 


var _pr = _sel.contents;
var pstr = _pr.toString();
var p_clean = pstr.replace("-", "00"); // Das funktioniert
p_clean = pstr.replace("!"\+, "1"); // Das funktioniert nicht


Doch leider funktioniert das nicht. Habt ihr eine Idee?

Vielen Dank im Voraus.
LG faxinger
X

GREP in string Variablen

WernerPerplies
Beiträge gesamt: 2597

19. Nov 2020, 07:37
Beitrag # 2 von 16
Beitrag ID: #577626
Bewertung: ||
(6414 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Faxinger,

so vielleicht?

Code
/ insert at start of Script	 
String.prototype.allReplace = function(/*string*/search, /*String*/replace)
{
return this.replace(new RegExp (search, "g"),replace);
}

// test
alert("test!!!!--!!ende".allReplace("!","1"));


Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 16.12.2020, Version 3.XX, neue Funktionen
Kundenstimmen


als Antwort auf: [#577625]

GREP in string Variablen

Thomas Richard
Beiträge gesamt: 18683

19. Nov 2020, 11:48
Beitrag # 3 von 16
Beitrag ID: #577630
Bewertung:
(6357 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat "!"\+


Das findet wohl alle Vorkommen von !\+

Was du wünschst, dürfte eher mit
Code
"!“+, "1" 

zu erreichen sein.


MfG

Thomas


Und wenn dir geholfen wurde, hilf uns, dies auch weiterhin zu können.
http://www.hilfdirselbst.ch/info/


als Antwort auf: [#577625]

GREP in string Variablen

faxinger666
Beiträge gesamt: 149

19. Nov 2020, 20:30
Beitrag # 4 von 16
Beitrag ID: #577636
Bewertung:
(6211 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Thomas,

danke für deine Antwort, aber genau das funktioniert eben nicht:

Code
 
var str = "djlsaöj jlkö k !!! !! dlöfökgsä!!! ädöfslä# ! "
var str_clean = str.replace("!"+, "1" ); // Das funktioniert nicht

alert (str_clean);



als Antwort auf: [#577630]

GREP in string Variablen

faxinger666
Beiträge gesamt: 149

19. Nov 2020, 20:35
Beitrag # 5 von 16
Beitrag ID: #577637
Bewertung:
(6210 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

vielen Dank für deine Antwort. Ja das skript funktioniert. Allerdings bin ich mit Funktionen noch nicht so firm.

Der Name der Funktion ist allReplace oder string.prototype.allReplace?

LG
faxinger


als Antwort auf: [#577626]

GREP in string Variablen

faxinger666
Beiträge gesamt: 149

19. Nov 2020, 20:52
Beitrag # 6 von 16
Beitrag ID: #577638
Bewertung:
(6195 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,

noch eine Zusatzfrage, kann man in der Funktion auch gleich mehrere Suchen/Ersetzen kombinieren?

In der Art
Code
alert("test!!!!-&-!! & && !&!ende".allReplace("!","1"),("&","6")); 

Bzw. Suchen/Ersetzen-Paare definieren und dann die Funktion aufrufen?

Danke
LG
Faxinger


als Antwort auf: [#577637]
(Dieser Beitrag wurde von faxinger666 am 19. Nov 2020, 20:54 geändert)

GREP in string Variablen

Martin Fischer
  
Beiträge gesamt: 12452

19. Nov 2020, 21:07
Beitrag # 7 von 16
Beitrag ID: #577639
Bewertung: |||
(6181 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo faxinger,

versuch mal das:

Code
var str = "djlsaöj jlkö k !!! !! dlöfökgsä!!! ädöfslä# ! " 
var str_clean = str.replace(/\!/g, '1'); // Das funktioniert nicht

alert (str_clean);


Viele Grüße
Martin




als Antwort auf: [#577636]

GREP in string Variablen

faxinger666
Beiträge gesamt: 149

19. Nov 2020, 21:49
Beitrag # 8 von 16
Beitrag ID: #577640
Bewertung:
(6154 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

ja perfekt so gehts!
Und mit mehreren S/E hintereinander funkt es auch!
Toll

Vielen Dank
und schönen Abend

Faxinger


als Antwort auf: [#577639]

GREP in string Variablen

faxinger666
Beiträge gesamt: 149

19. Nov 2020, 22:03
Beitrag # 9 von 16
Beitrag ID: #577641
Bewertung:
(6130 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,
sorry, es geht leider doch nicht:
Code
var str = "djlsaöj jlkö k !!! !! dlöfökgsä!!! ädöfslä# ! "  
var str_clean = str.replace(/\!/g, '1');
var str_clean = str.replace(/\"/g, '2');
alert (str_clean);

anscheinend muss das " maskiert werden aber dann funktioniert die Ersetzung !->1 auch nicht mehr.


als Antwort auf: [#577640]

GREP in string Variablen

faxinger666
Beiträge gesamt: 149

19. Nov 2020, 22:06
Beitrag # 10 von 16
Beitrag ID: #577642
Bewertung:
(6122 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
das Ziel sind folgende Ersetzungen:
! -> 1
" -> 2
§ -> 3
$ -> 4
% -> 5
& -> 6
/ -> 7
( -> 8
) -> 9
= -> 0
- -> 00

Ich tu mir da leider etwas schwer mit den Maskierungen der Sonderzeichen...


als Antwort auf: [#577641]

GREP in string Variablen

Martin Fischer
  
Beiträge gesamt: 12452

19. Nov 2020, 22:08
Beitrag # 11 von 16
Beitrag ID: #577643
Bewertung: |||
(6119 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zum Hintergrund siehe z.B. JavaScript String replace() Method

Der replace()-Befehl erwartet
a) einen String oder
b) einen regulären Ausdruck.

Deine Versuchsanordnungen waren mit einem String aufgebaut. Aber damit bekommst Du keine Wiederholungen zum Greifen:
Zitat If you are replacing a value (and not a regular expression), only the first instance of the value will be replaced.


Und weiter
Zitat To replace all occurrences of a specified value, use the global (g) modifier.


Struktur des regulären Ausdrucks beim replace()-Befehl:
Code
/[Ausdruck]/[Modifikator] 

/\!/gi


Da das Ausrufezeichen bei regulären Ausdrücken als Negation dient, muss es mit einem Backslash escaped werden, wenn es als Ausrufezeichen verwendet werden soll.

g und i sind Modifikatoren.
g steht für global - alle und nicht nur die erste gefundene Stelle ändern;
i steht für case insensitive (Groß-/Kleinschreibung nicht beachten).

Beide Modifikatoren sind optional, können verwendet oder nicht verwendet werden.

Viele Grüße
Martin




als Antwort auf: [#577640]

GREP in string Variablen

WernerPerplies
Beiträge gesamt: 2597

19. Nov 2020, 22:09
Beitrag # 12 von 16
Beitrag ID: #577644
Bewertung: |||
(6117 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Faxinger,

Code
/ insert at start of Script	  
String.prototype.allReplace = function(/*string*/search, /*String*/replace)
{
return this.replace(new RegExp (search, "g"),replace);
}


Mit [Object].prototype.methodenName kannst Du einem beliebigem JavaScript-Objekt eigene Funktionalitäten zuweisen.

Solch eine Prototyp-Zuweisung musst Du einmalig aufrufen, bevor Du sie beliebig oft im Skript benutzen kannst.

In diesem Fall kapsel ich einfach einen Regex-Ausdruck.

Das vereinfacht ein wenig die Schreibweise des Suchausdrucks.

Der Aufruf erfolgt durch den Methodennamen und kann natürlich beliebig oft hintereinander aufgerufen werden.

Die aufrufen werden dann von links nach rechts abgearbeitet:

alert("!.:;".allReplace("!","1").allReplace("\\.","2").allReplace(":","3").allReplace(";","4")); --> "1234"

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 16.12.2020, Version 3.XX, neue Funktionen
Kundenstimmen


als Antwort auf: [#577637]

GREP in string Variablen

Martin Fischer
  
Beiträge gesamt: 12452

19. Nov 2020, 22:13
Beitrag # 13 von 16
Beitrag ID: #577645
Bewertung:
(6111 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Faxinger,

versuch es so
Code
var str = 'djlsaöj jlkö k !!! !! dlöfökgsä!!! ädöfslä# " "   "! '; 
var str_clean = str.replace(/\!/g, '1');
str_clean = str_clean.replace(/\"/g, '2');
alert(str_clean);


Wichtig ist, dass Du beim zweiten Mal den replace-Befehl nicht mehr auf str, sondern auf str_clean anwendest.

oder kaskadierend:
Code
var str = 'djlsaöj jlkö k !!! !! dlöfökgsä!!! ädöfslä# " "   "! '; 
var str_clean = str.replace(/\!/g, '1').replace(/\"/g, '2');
alert(str_clean);


Viele Grüße
Martin




als Antwort auf: [#577641]
(Dieser Beitrag wurde von Martin Fischer am 19. Nov 2020, 22:21 geändert)

GREP in string Variablen

Martin Fischer
  
Beiträge gesamt: 12452

19. Nov 2020, 22:28
Beitrag # 14 von 16
Beitrag ID: #577646
Bewertung:
(6095 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
So

Code
var str = '!"§$%&/()-'; 
var str_clean = str.replace(/\!/g, '1');
str_clean = str_clean.replace(/\"/g, '2');
str_clean = str_clean.replace(/§/g, '3');
str_clean = str_clean.replace(/\$/g, '4');
str_clean = str_clean.replace(/%/g, '5');
str_clean = str_clean.replace(/\&/g, '6');
str_clean = str_clean.replace(/\//g, '7');
str_clean = str_clean.replace(/\()/g, '8');
str_clean = str_clean.replace(/\)/g, '9');
str_clean = str_clean.replace(/-/g, '00');
alert(str_clean);


oder so

Code
var str = '!"§$%&/()-'; 
var str_clean = str.replace(/\!/g, '1')
.replace(/\"/g, '2')
.replace(/§/g, '3')
.replace(/\$/g, '4')
.replace(/%/g, '5')
.replace(/\&/g, '6')
.replace(/\//g, '7')
.replace(/\()/g, '8')
.replace(/\)/g, '9')
.replace(/-/g, '00');

alert(str_clean);


Viele Grüße
Martin




als Antwort auf: [#577642]
(Dieser Beitrag wurde von Martin Fischer am 19. Nov 2020, 22:30 geändert)

GREP in string Variablen

WernerPerplies
Beiträge gesamt: 2597

19. Nov 2020, 22:39
Beitrag # 15 von 16
Beitrag ID: #577647
Bewertung: |||
(6072 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
oder so:
Code
// insert at start of Script	  
String.prototype.allReplace = function(/*string*/search, /*String*/replace)
{
return this.replace(new RegExp (search, "g"),replace);
}
alert("!\"§$%&/()=-".allReplace("!","1")
.allReplace("\"","2")
.allReplace("§","3")
.allReplace("\\$","4")
.allReplace("%","5")
.allReplace("&","6")
.allReplace("/","7")
.allReplace("\\(","8")
.allReplace("\\)","9")
.allReplace("=","0")
.allReplace("-","00"));

:-)

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign
neu: WpsProjectHandler 16.12.2020, Version 3.XX, neue Funktionen
Kundenstimmen


als Antwort auf: [#577644]
X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
05.02.2021 - 05.11.2021

Digicomp Academy AG, Limmatstrasse 50, 8005 Zürich
Freitag, 05. Feb. 2021, 13.00 Uhr - Freitag, 05. Nov. 2021, 17.00 Uhr

Lehrgang

Bilden Sie sich zum zertifizierten Publishing-Multimedia-Profi aus. Neben Fotografie und Video befassen Sie sich mit der Medienproduktion, digitalen Publikationen und dem Webdesign für Desktop- und mobile Endgeräte.

Preis: CHF 10'500.-
Dauer: 30 Tage (ca. 210 Lektionen) – Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PM

Veranstaltungen
05.03.2021 - 30.04.2021

Digicomp Academy AG, Zürich oder virtuell
Freitag, 05. März 2021, 13.00 Uhr - Freitag, 30. Apr. 2021, 17.00 Uhr

Lehrgang

Im berufsbegleitenden Web Publisher Lehrgang vertiefen Sie Ihr Wissen rund um das Thema Screendesign und die Umsetzung von Websites. Wir befähigen Sie dazu selbständig und professionell Ihren Webauftritt zu planen und in die Realität umzusetzen.

Preis: CHF 3'250.–
Dauer: 8.5 Tage - Unterricht findet jeweils am Freitag von 13 - 19 Uhr und Samstag von 09 - 17 Uhr statt.

Ja

Organisator: Digicomp Academy AG

Kontaktinformation: Kundenberater-Team, E-Mailkundenberatung AT digicomp DOT ch

digicomp.ch/d/9PWEB