Many thanks to all who answered on this. I'm going with Mark's
suggestion here which is doing the trick quite nicely.
Thanks,
RJay
On Sep 18, 2008, at 4:21 PM, Mark Lively wrote:
> Another option is with text item delimiters
>
>
> set instring to "This is some _boring_ text"
> set repstring to "EXCELLENT"
> set tid to applescript's text item delimiters
> set applescript's text item delimiters to "_"
> set outtext to text item 1 of instring & repstring & text item 3 of
> instring
> set applescript's text item delimiters to TID
> outtext
>
> Not exactly what you were looking for but it works.
>
> It can even be expanded.
>
> set instring to "This is some _boring_ text. With _multiple_
> replaces."
> set reptext to {"EXCELLENT","no"}
> set tid to applescript's text item delimiters
> set applescript's text item delimiters to "_"
> set itemlist to every text item of instring
> set outtext to ""
> set applescript's text item delimiters to TID
>
> repeat with i from 1 to count itemlist
> if i mod 2 = 1 then
> set outtext to outtext & item i of itemlist
> else
> set outtext to outtext & item (i div 2) of reptext
> end
> end
>
> furthermore....
>
> set instring to "This is some _boring_ text. With _multiple_ _out
> of order_ replaces."
> set reparray to {"out of order", "ordered or unordered", "boring",
> "EXCELLENT", "multiple", "no"}
> set tid to AppleScript's text item delimiters
> set AppleScript's text item delimiters to "_"
> set itemlist to every text item of instring
> set outtext to ""
> set AppleScript's text item delimiters to tid
>
> repeat with i from 1 to count itemlist
> if i mod 2 = 1 then
> set outtext to outtext & item i of itemlist
> else
> repeat with j from 1 to ((count reparray) div 2)
> if item (2 * j - 1) of reparray = item i of itemlist then
> set outtext to outtext & item (2 * j) of reparray
> exit repeat
> end if
> end repeat
> end if
> end repeat
>
> -Mark
> Feeling pedantic and liking it.
>
>
> On Sep 18, 2008, at 4:56 PM, Mark J. Reed wrote:
>
>> Well, there's always the brute force approach:
>>
>> set theText to (text begin through (beginItal-1) of theText) &
>> newString & (text (endItal+1) through end of theText)
>>
>> On Thu, Sep 18, 2008 at 4:19 PM, RJay Hansen
>> <[log in to unmask]> wrote:
>>> Thanks for the suggestion Mark. Unfortunately, that generates the
>>> same
>>> error--"Can't set text 23 thru 32 of theText...etc."
>>>
>>> RJay
>>>
>>>
>>> On Sep 18, 2008, at 2:54 PM, Mark J. Reed wrote:
>>>
>>>> If theText is
>>>>
>>>> Here's some text with underscores (_like this_).
>>>>
>>>> Then the first underscore is at text position 36, but is contained
>>>> within word 6. I'm guessing that beginItal holds the former value,
>>>> not the latter, so you want "set text beginItal thru endItal of
>>>> theText", not "set words ...". (Setting words would also
>>>> replace the
>>>> entire words "(_like" and "this_)" rather than leaving the
>>>> parentheses
>>>> alone.)
>>>>
>>>> On Thu, Sep 18, 2008 at 3:16 PM, RJay Hansen
>>>> <[log in to unmask]>
>>>> wrote:
>>>>>
>>>>> I'm writing a script that's intended to parse out text that is
>>>>> enclosed
>>>>> within underscores (_like this_). I'm using Tex-Edit Plus and
>>>>> Smile.
>>>>>
>>>>> I'm putting text selected in Tex-Edit Plus into a variable then
>>>>> getting
>>>>> what
>>>>> I need working with the text in the variable. Once I have it, I
>>>>> want to
>>>>> replace the string surrounded by the underscores (and including
>>>>> the
>>>>> underscores) with the new string using this:
>>>>>
>>>>> set words beginItal thru endItal of theText to newString
>>>>>
>>>>> beginItal and endItal are the indexes of the underscores.
>>>>> theText is the
>>>>> variable that the selection from the document is read into and
>>>>> newString
>>>>> is
>>>>> of course, the replacement string.
>>>>>
>>>>> Smile comes back with "Can't set words 23 thru 32 of theText
>>>>> (it puts the
>>>>> actual string in the error message/not the variable name as
>>>>> shown here)
>>>>> to
>>>>> newString (and again, it puts the new string in the error
>>>>> message, not
>>>>> the
>>>>> variable name)".
>>>>>
>>>>> I haven't been able to figure out why I can't do this. Any help
>>>>> would be
>>>>> appreciated.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> RJay
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Mark J. Reed <[log in to unmask]>
>>>
>>
>>
>>
>> --
>> Mark J. Reed <[log in to unmask]>
>>
|