[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: 165

18. Nov 2020, 23:51
Beitrag # 1 von 16
Bewertung:
(9728 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: 2683

19. Nov 2020, 07:37
Beitrag # 2 von 16
Beitrag ID: #577626
Bewertung: ||
(9695 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 Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#577625]

GREP in string Variablen

Thomas Richard
Beiträge gesamt: 19037

19. Nov 2020, 11:48
Beitrag # 3 von 16
Beitrag ID: #577630
Bewertung:
(9638 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: 165

19. Nov 2020, 20:30
Beitrag # 4 von 16
Beitrag ID: #577636
Bewertung:
(9492 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: 165

19. Nov 2020, 20:35
Beitrag # 5 von 16
Beitrag ID: #577637
Bewertung:
(9491 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: 165

19. Nov 2020, 20:52
Beitrag # 6 von 16
Beitrag ID: #577638
Bewertung:
(9476 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: 12590

19. Nov 2020, 21:07
Beitrag # 7 von 16
Beitrag ID: #577639
Bewertung: |||
(9462 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: 165

19. Nov 2020, 21:49
Beitrag # 8 von 16
Beitrag ID: #577640
Bewertung:
(9435 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: 165

19. Nov 2020, 22:03
Beitrag # 9 von 16
Beitrag ID: #577641
Bewertung:
(9411 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: 165

19. Nov 2020, 22:06
Beitrag # 10 von 16
Beitrag ID: #577642
Bewertung:
(9403 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: 12590

19. Nov 2020, 22:08
Beitrag # 11 von 16
Beitrag ID: #577643
Bewertung: |||
(9400 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: 2683

19. Nov 2020, 22:09
Beitrag # 12 von 16
Beitrag ID: #577644
Bewertung: |||
(9398 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 Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#577637]

GREP in string Variablen

Martin Fischer
  
Beiträge gesamt: 12590

19. Nov 2020, 22:13
Beitrag # 13 von 16
Beitrag ID: #577645
Bewertung:
(9392 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: 12590

19. Nov 2020, 22:28
Beitrag # 14 von 16
Beitrag ID: #577646
Bewertung:
(9376 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: 2683

19. Nov 2020, 22:39
Beitrag # 15 von 16
Beitrag ID: #577647
Bewertung: |||
(9353 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 Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#577644]
X

Aktuell

Diverses
flightcheck

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
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/