Заменить букву между цифрами

  • Автор темы Автор темы sans
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

sans

Топикстартер
12 лет на форуме
Сообщения
61
Реакции
18
Добрый день.
Есть такая проблемка. Имеем скрипт в индизайне по замене в тексте всяких лишних пробелов и прочего.
При верстке используется текст с засечками, соответственно, между буквами имеем "х" (5х4) с засечками.
Нужно дополнить скрипт, чтобы буква "х" между цифрами менялась либо на "х" без засечек, либо символ умножения.
Например, нужно было добавить неразрывный пробел после "мл" - добавил в скрипт [" мл ", "^Sмл "] и порядок.
А вот с "х", что-то никак не получается. Может кто подскажет как правильно это прописать в скрипте?
 
Ответ: Заменить букву между цифрами

Через Grep-замену можно.
Ищем:
Код:
"(\\d)x(\\d)"
Заменяем на:
Код:
"$1×$2"
В замену я просто через буфер скопировал знак умножения. Если он есть в шрифте, то "подхватится", если нет - придётся ещё символьный стиль прикручивать.

Если же через обычный поиск (не Греп) - будет сложнее, но тоже возможно в принципе.
 
Ответ: Заменить букву между цифрами

Не получается: "сannot find match"
 
Ответ: Заменить букву между цифрами

Где не получается? В окне поиска? тогда слеш один нужен. Не (\\d), а (\d)
 
Ответ: Заменить букву между цифрами

Спасибо, работает.
В принципе, так тож пойдет. Но все таки остался вопрос можно ли это делать через скрипт.
Просто очень удобно, постепенно добавляю в скрипт то, что нужно. При верстке вкинул текст , скрипт запустил... опс и все проверено и исправлено.
Ведь не всегда увидишь в тексте то, что не нужно.
 
Ответ: Заменить букву между цифрами

Ну в скрипте нечто вроде

Код:
grep	{findWhat:"(\\d)x(\\d)"}	{changeTo:"$1×$2"}	{includeFootnotes:true, includeMasterPages:true, includeHiddenLayers:true, wholeWord:false}

Вам же Женя написал.
 
Ответ: Заменить букву между цифрами

sans, в первом сообщении Вы привели пример из Вашего скрипта:
Это формат обычного поиска, не GREP. И это не скрипт findchangebylist.jsx, пример из которого привёл Андрей. Отсюда возникает вопрос: а GREP у Вас в скрипте в принципе используется? Если нет, то надо смотреть его (скрипт) целиком.
 
Ответ: Заменить букву между цифрами

Что-то не получается:
Код:
function myReplaceStuff() {
	myTxtReplace =	[
							
								[" мл ", "^Sмл  "],
								[" кг ", "^Sкг  "],
								[" ч.л. ", "^Sч.л.  "],
								[" ч. л. ", "^Sч.л.  "],
								["г.", "г. "],
								[" гг.", " ^Sгг."],
								[" грн.", " ^Sгрн."],
								[" коп.", " ^Sкоп."],
								[" тыс", " ^Sтыс"],
								[" млн", " ^Sмлн"],
								[" млрд", " ^Sмлрд"],
								[" т.п.", " ^Sт.п."],
								[" т.д.", " ^Sт.д."],
								[" др.", " ^Sдр."],
								[" км", " ^Sкм"],
								["см. стр.", "см.^Sстр."],
								[" ^p", "^p"],
								[" —", "^S—"],
								["оС", "°С"]

								]
								
	myGrpReplace =	[
								["[~m~>~f~|~S~s~<~/~.~3~4~% ]{2,}", " "], // Multiple Space to Single Space
								["--", "~_"] // Dash Dash to Em-dash 
                                    ["(\d)x(\d)","$1\x{00D7}$2"]
							]
								//["~b~b+", "\\r"], Multiple Return to Single Return
}
function replaceTxt() {
	app.findTextPreferences = NothingEnum.nothing;
	app.changeTextPreferences = NothingEnum.nothing;
	app.findChangeTextOptions.wholeWord = false;
	app.findChangeTextOptions.caseSensitive = true;
	app.findChangeTextOptions.includeMasterPages = false;
	for (i = 0; i <  myTxtReplace.length; i++) {
		var myCurArray = myTxtReplace[i];
		app.findTextPreferences.findWhat = myCurArray[0];
		app.changeTextPreferences.changeTo = myCurArray[1]; 
		myTextFrame.parentStory.changeText();
	}
	app.findTextPreferences = NothingEnum.nothing;
	app.changeTextPreferences = NothingEnum.nothing;
}
function replaceGrep() {
	app.findGrepPreferences = NothingEnum.nothing;
	app.changeGrepPreferences = NothingEnum.nothing;
	for (i = 0; i <  myGrpReplace.length; i++) {
		var myCurArray = myGrpReplace[i];
		app.findGrepPreferences.findWhat = myCurArray[0];
		app.changeGrepPreferences.changeTo = myCurArray[1]; 
		myTextFrame.parentStory.changeGrep();
	}
	app.findGrepPreferences = NothingEnum.nothing;
	app.changeGrepPreferences = NothingEnum.nothing;
Вот здесь app.findGrepPreferences.findWhat = myCurArray[0]; выдает ошибку
 
Ответ: Заменить букву между цифрами

Здесь как раз надо 2 слеша: \\d
:)
И тогда уже: \\x{00D7} — опять же, 2 слеша.
 
Ответ: Заменить букву между цифрами

Хм. Я и правда думал про findchangebylist(((

С замечаниями Жени - всё будет работать
 
Ответ: Заменить букву между цифрами

error.jpgНу ни как ':(' даже с двумя слэшами
 
Ответ: Заменить букву между цифрами

В строке
["--", "~_"] // Dash Dash to Em-dash
после скобки ] запятую поставьте.

Не по теме:
И про 2 слеша не забудьте.
 
Ответ: Заменить букву между цифрами

'dans))' Заработало!

Eugenyus - огромное спасибо!'beer1'
 
Статус
Закрыто для дальнейших ответов.