line-breaks

Wie weet hoe je line-breaks kunt vervangen met applescript?

WordService 2.5.1 kan ze wel verwijderen...

Eh, ik wil graag een op zichzelf staand programmaatje maken. Dus niet met behulp van een ander programma. Anders zou ik het nog via BBedit kunnen doen met applescript maar het moet gewoon kunnen op de een of andere manier :wink:

Net als in applescript moet je zul iets specifieker moeten zijn. Dus: Om wat voor bestanden gaat het (Text, .doc, .rtf, Quark, Indesign etc)?

Voor RTF-bestanden gebruik ik Tex-Edit, (ook .doc converteer ik eerst naar RTF). Eenvoudig shareware programma met tig dozijn scripts.
Voor .txt bestanden heeft OS X een eigen (onzichtbaar) programma aan boord. Zo heb ik bv. een script dat honderden tekstbestanden achter elkaar plakt tot 1 file in de tijd dat jij ‘tekstbestand’ kunt zeggen.
In Quark en InDesign kan het ook, maar werkt trager. Alle tekstbehandelingen zijn beter vooraf te doen.

Dit is al handig voor de rest van de karakters:

[code:1:b14e182f31]set the_string to ""
repeat with i from 1 to 255
set the_string to the_string & (ASCII character i)
end repeat
set the clipboard to the_string
return the_string[/code:1:b14e182f31]

Sorry. ik had inderdaad wat duidelijker kunnen zijn. Ik ben dus bezig met een programmaatje dat ondertitels converteert (van .srt naar .stl). Hieronder een voorbeeld van .srt:

1
00:00:00,613 → 00:00:03,744
Ik wil 'n man voor het volk zijn.

2
00:00:18,354 → 00:00:22,528
Caesar, Caesar…
-Volk van Rome…

Zoals je ziet begint elke ondertitel met een nummer (resp. 1, 2, etc.). Daarna komt op een volgende regel de tijdcode met daaronder de ondertitels. Dit wil ik converteren naar het volgende:

00:00:00.15 , 00:00:03.18 , Ik wil 'n man voor het volk zijn.
00:00:18.08 , 00:00:22.13 , Caesar, Caesar… | -Volk van Rome…

Alles lukt me. Openen, tekst omzetten naar string, vervangen van letters of woorden en de output opslaan. Ik kom er alleen niet uit hoe ik die ****** returns/ line-breaks weghaal.

Laat eens een stukkie script zien.

[code:1:d6df596a9c] property extension_list : {"srt"}

on run {}
select_file_with_prompt()
end run

on open file_dropped
set num_of_Files to (number of items in file_dropped)
if num_of_Files > 1 then
beep
display dialog "Please select only one file!"
else
extension_check(file_dropped)
end if
end open

on select_file_with_prompt()
copy (choose file with prompt "Please choose SubRip file") to the_file_chosen
extension_check(the_file_chosen)
end select_file_with_prompt

on extension_check(file_to_check)
set the item_info to info for file_to_check
if the name extension of the item_info is in the extension_list then
set checked_file to file_to_check
replace_chars(checked_file)
else
beep
display dialog “This isn’t a SubRip file!”
select_file_with_prompt()
end if
end extension_check

on replace_chars(srt_file)
copy (read srt_file as string) to text_as_string
set the target_file to choose file name with prompt "Name and location for the output file:" default name "Converted.stl"
open for access target_file with write permission
write text_as_string to target_file
close access target_file
end replace_chars
[/code:1:d6df596a9c]

zoek naar r (backslash r), vervang door spatie.

Voorbeeldcode:

[code:1:b452ab53e3]
set the_text to "stringrtest"
display dialog the_text

set AppleScript’s text item delimiters to “r”
set theitemlist to every text item in the_text
set AppleScript’s text item delimiters to " "
set the_new_text to every item in theitemlist as string
display dialog the_new_text
[/code:1:b452ab53e3]

Werkt! Alleen weet je ook hoe ik een dubbele line-break kan vinden? "rr" werkt helaas niet. Het is de bedoeling dat ik de twee line-breaks, evenals het nummer dat daarop volgt, verwijder. Sorry dat ik zoveel vraag maar ik wil niet eerst alles over AppleScript leren om dit programmaatje te maken. :innocent:

[quote:8c829d28c8="Skilip"]Werkt! Alleen weet je ook hoe ik een dubbele line-break kan vinden? "rr" werkt helaas niet.[/quote:8c829d28c8]

Misschien is de textfile geschreven met rn ipv rr?

Beste harold, Ik zal zo, na de wedstrijd, even kijken of het werk. Waar staat n voor?

[quote:db6a77bdb2="Skilip"]Beste harold, Ik zal zo, na de wedstrijd, even kijken of het werk. Waar staat n voor?[/quote:db6a77bdb2]

r is een mac regeleinde
n is een unix regeleinde
rn is een dosregeleinde

is er trouwens een reden dat je dit puur in applescript doet? In BBEdit is het allemaal een stuk sneller.

Ja, ik wil graag dat maccers die geen BBedit hebben ook dit progje kunnen gebruiken.

Met n lukt het helaas ook niet. Kan ik niet zinnen met woorden die een lengte hebben van minder dan 3 karakters vervangen of verwijderen?

[quote:3c13938dc3="Skilip"]Met n lukt het helaas ook niet. Kan ik niet zinnen met woorden die een lengte hebben van minder dan 3 karakters vervangen of verwijderen?[/quote:3c13938dc3]

Vast wel, maar hoe weet ik niet.
Heb je niet een voorbeeldfile, bij mij werkt het vervangen van rr gewoon.

[url]http://members.home.nl/skilip/tekst.sit[/url]

[quote:08c2a55fd0="Skilip"][url]http://members.home.nl/skilip/tekst.sit[/url][/quote:08c2a55fd0]

Het probleem schreeuwt om een echte teksteditor met grep mogelijkheden.
Ik denk niet dat ik je verder kan helpen als het puur in applescript moet. Wellicht dat je vraag meer geschikt is voor een dedicated applescript forum als http://macscripter.net/.

Ik ga het proberen met ActionScript. In elk geval bedankt voor de moeite. :wink: