Вы можете использовать %%% {PBXSelectionStart} %%%
Из документации Apple:
Получение текста из активного окна
Эти переменные заменяются текстомв активном окне:
- %%% {PBXSelectedText} %%% заменяется выделенным текстом в активном текстовом объекте.
- %%% {PBXAllText} %%%заменяется на весь текст в активном текстовом объекте.
Получение информации о содержимом активного окна
Эти переменные заменяются информацией о тексте в активном окне:
- %%% {PBXTextLength} %%% заменяется количеством символов в активном текстовом объекте.
- %%% {PBXSelectionStart} %%% заменяется индексомпервый символ в выделении в активном текстовом объекте.
- %%% {PBXSelectionEnd} %%% заменяется индексом первого символа после выделения в активном текстовом объекте.
- %%% {PBXSelectionLength} %%% заменяется номером чаracters в текущем выделении в активном текстовом объекте.
Промедление принесло вам этот скрипт.
Он работает и делает то, что должен.Но это очень просто, и есть ошибки, и это, вероятно, не лучший способ сделать это.
Не используйте @ и "в строках, которые вы хотите заменить. На вашем месте я бы не сталиспользуйте его в любом случае. ^^
Ввод сценария Selection
, вывод Replace Document Contents
#!/bin/sh
if [ %%%{PBXSelectionLength}%%% -gt 0 ]
then
echo "This does not work if you select text. Put your cursor inside a String." >&2
exit
fi
Source=`cat "%%%{PBXFilePath}%%%"`
SelectionStart="%%%{PBXSelectionStart}%%%"
SelectionEnd="%%%{PBXSelectionEnd}%%%"
BOOL=1
StringStart=$SelectionStart
StringStop=$SelectionEnd
while [ $BOOL -eq 1 ]
do
tmpText=`echo "${Source:${StringStart}:1}"`
if [ "$tmpText" = "@" ]
then BOOL=0
else StringStart=$(($StringStart - 1))
fi
done
BOOL=1
while [ $BOOL -eq 1 ]
do
tmpText=`echo "${Source:${StringStop}:1}"`
if [ "$tmpText" = "\"" ]
then BOOL=0
fi
StringStop=$(($StringStop + 1))
done
StringToReplace=`echo ${Source:${StringStart}:$(($StringStop - $StringStart))}`
ReplacementString="NSLocalizedString($StringToReplace,nil)"
echo -n "${Source:0:${StringStart}}"
echo -n "$ReplacementString"
echo -n "${Source:${StringStop}}"