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

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

19. Nov 2020, 07:37
Beitrag # 2 von 16
Beitrag ID: #577626
Bewertung: ||
(12142 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"));



als Antwort auf: [#577625]

GREP in string Variablen

Thomas Richard
Beiträge gesamt: 19313

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


als Antwort auf: [#577625]

GREP in string Variablen

faxinger666
Beiträge gesamt: 167

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

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

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

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



als Antwort auf: [#577636]

GREP in string Variablen

faxinger666
Beiträge gesamt: 167

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

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

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

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


als Antwort auf: [#577640]

GREP in string Variablen

WernerPerplies
Beiträge gesamt: 2755

19. Nov 2020, 22:09
Beitrag # 12 von 16
Beitrag ID: #577644
Bewertung: |||
(11845 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"


als Antwort auf: [#577637]

GREP in string Variablen

Martin Fischer
  
Beiträge gesamt: 12775

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



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: 12775

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



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: 2755

19. Nov 2020, 22:39
Beitrag # 15 von 16
Beitrag ID: #577647
Bewertung: |||
(11800 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"));

:-)


als Antwort auf: [#577644]
X