Имя: Пароль:
1C
 
Найти в конце строке символ "n" и заменить его на "N "
0 Контакт
 
11.07.08
14:21
Как в конце строке (позий от 1 до 5) символ "n" и заменить его на "N "
1 wPa
 
11.07.08
14:21
СтрЗаменить чем плохо?
2 GenV
 
11.07.08
14:23
1+ или используй Прав и Сред/Лев
3 Фокусник
 
11.07.08
14:25
(0) Вот здесь v8: с помощью какой функции удалить запятую из строки уже научились удалять запятую с конца, действуй аналогично (:
4 Mitriy
 
11.07.08
14:25
5 Контакт
 
11.07.08
14:30
(3) и (4) Одновременно))) вы случайно не Братья?
6 Живой Ископаемый
 
11.07.08
14:33
Я бы вот после небольшого знакомства РегЭксп заюзал бы...
7 Фокусник
 
11.07.08
14:33
(5) Все мы братья на этой земле... (:
8 Контакт
 
11.07.08
14:36
Брат а как искать в строке Символ, есть он или нет?
9 Контакт
 
11.07.08
14:39
я точно не знаю где в конце может быть символ "n"
10 relbler
 
11.07.08
14:40
(8)
Для каждого Символ из Строка
  если Символ="n" Тогда
    Сообщить("Символ есть!");
  КонецЕсли
КонецЦикла
11 hhhh
 
11.07.08
14:43
(5) это вы братья с семьдесят вторым максимом. Одновременно один и тот же вопрос задаете.
12 Контакт
 
11.07.08
14:46
(11) Я бы мог сам написать процедурку по этому...но вспомнил что сегодня пятница и есть драгоценный форум MISTA.

C Пятницей Товарищи!!!
13 relbler
 
11.07.08
14:46
Цикл ном=1 по СтрДлина(Строка)
  если Найти(Сред(Строка,ном,1)="n" Тогда
    Сообщить("Символ n есть! В позиции:"+ном);
  КонецЕсли
КонецЦикла
14 Serg_1960
 
11.07.08
14:49
(12) Спасиба таварисчь. Я так и подумал: ента ветка - пятничный развод - это OFF
15 Контакт
 
11.07.08
14:54
по регистру Буквы будет смотреть? Мне нужно "n"
16 Контакт
 
11.07.08
14:55
(14) Я Братьев не развожу, тАвАрисчЬ!
17 relbler
 
11.07.08
14:57
есть функция Символ(кодСимвола) помоему , в синтаксис-помошнике посмотри
18 Контакт
 
11.07.08
15:04
Синтаксис:
КодСимвола(<Строка>, <Номер символа>)

Брат скажи вот так?

Цикл ном=1 по СтрДлина(Строка)
  если Найти(Сред(Строка,ном,1)=КодСимвола("n") Тогда
    Сообщить("Символ n есть! В позиции:"+ном);
  КонецЕсли
КонецЦикла
19 relbler
 
11.07.08
15:18
Цикл ном=СтрДлина(Строка)-5 по СтрДлина(Строка)
  если Сред(Строка,ном,1)=Символ(КодСимвола("n")); Тогда
    Сообщить("Символ n есть! В позиции:"+ном);
  КонецЕсли
КонецЦикла
так наверно
20 relbler
 
11.07.08
15:20
А лучше так
Цикл ном=СтрДлина(Строка)-5 по СтрДлина(Строка)
  если КодСимвола(Сред(Строка,ном,1))=КодСимвола("n"); Тогда
    Сообщить("Символ n есть! В позиции:"+ном);
  КонецЕсли
КонецЦикла
21 Живой Ископаемый
 
11.07.08
15:23
Вот так будет работать:
   RegExp = Новый COMОбъект("VBScript.RegExp");
   RegExp.Global = Истина;
   RegExp.ignorecase=Ложь;
   RegExp.Pattern = "n$";
   Сообщить(RegExp.Replace(АнализируемСтроку,"N"));


АнализируемСтроку = nтара  цсащотл шоцртулдо увс n
nтара  цсащотл шоцртулдо увс N
Щас подумаю как сделать чтобы меняла т не в конце строки а просто последнюю
22 Контакт
 
11.07.08
15:30
(21) Дык "n" не последняя а пред-Предпоследняя или предпредпредполсдняя
23 Живой Ископаемый
 
11.07.08
15:31
2(22)Подожди, ща покурю...
24 relbler
 
11.07.08
15:42
а тебе не пофиг до регистра? (если N на N) заменит
25 Контакт
 
11.07.08
15:44
(24) Дык мне нужно заменить на "N " (N с пробелом)
26 relbler
 
11.07.08
15:45
а на "№" нельзя заменить?
27 relbler
 
11.07.08
15:47
кури Perl скриптинг, он под это заточен
28 Контакт
 
11.07.08
15:48
(26) неа... нельзя. Есть строчки такие "Плоарпв апрвло n20"(не правильно),"плаопр аопвапрова n100"(не правильно), "Рпаплв авплва N 10" ( правильно!)
29 relbler
 
11.07.08
15:49
а ответ "Рпаплв авплва №10" ( правильно или нет?)
30 Контакт
 
11.07.08
15:52
(29) с № не правильно будет. Так как "Рпаплв авплва N 10" ( правильно!) а остальные "Плоарпв апрвло n20"(не правильно) Форматирую вот в пятницу.
31 hhhh
 
11.07.08
15:52
(28) стрЗаменить("n", "N ")
32 hhhh
 
11.07.08
15:53
(31) +     Строка = стрЗаменить(Строка, "n", "N ")
33 hhhh
 
11.07.08
15:57
(30 ) можно так

ПозицияПоследнегоn =  ПозицияПоследнегоn(Строка);

Если ПозицияПоследнегоn > 0 Тогда
   Строка = Лев(Строка, ПозицияПоследнегоn - 1) + "N " + Сред(Строка, ПозицияПоследнегоn + 1)

КонецЕсли;
34 relbler
 
11.07.08
15:58
стр=Прав(НеПравельныйОтвет,5)
стрЗаменить(стр,"n", "N ")
ПравельныйОтвет=Лев(НеПравельныйОтвет,СтрДлина(НеПравельныйОтвет)-5)+стр
35 Живой Ископаемый
 
11.07.08
16:18
Че-та как-то туго курицца....

Вот получилось вот такое:
   RegExp = Новый COMОбъект("VBScript.RegExp");
   RegExp.Global = Истина;
   RegExp.ignorecase=Ложь;
   RegExp.Pattern = "n(....$)|n(...$)|n(..$)|n(.$)|n($)";
   ОтНачалаДоПоследней_n = RegExp.Replace(АнализируемСтроку,"");
   RegExp.Pattern = ОтНачалаДоПоследней_n;
   ОтПоследней_n_ДоКонца = RegExp.Replace(АнализируемСтроку,"");
   RegExp.Pattern = "^n";
   КонецС_N=RegExp.Replace(ОтПоследней_n_ДоКонца,"N ");
   RegExp.Pattern = ОтПоследней_n_ДоКонца;
   ВРезультате =  RegExp.Replace(АнализируемСтроку,КонецС_N);
   Сообщить(ВРезультате);

На наверное нужно с Lookahead-улсовием (я пока не умею), ну и вообще наверняка как-то это можно одной строкой без лишних промежуточных вычислений и переменных
36 Живой Ископаемый
 
11.07.08
16:23
2(34) и у тебя и у меня заменит первую "n" из последних 5 символов.. А нужно - последнюю... то есть нужно как бы строку с конца обрабатывать...
37 Контакт
 
11.07.08
16:25
(35) Вирус!! ага? я по времени проверю кто быстрей обрабатывать будет.

Подскажите как в строке уже заменить символ с известным местом

   Цикл ном=СтрДлина(Рег.naim)-5 по СтрДлина(Рег.naim)
                если КодСимвола(Сред(Рег.naim,ном,1))=КодСимвола("n"); Тогда
                     // Тут заменяем
                КонецЕсли
                КонецЦикла
38 Контакт
 
11.07.08
16:27
(36) в Тему Брат куришь! прям в точку. Строка ведь может меньше 5 символов быть! (Ошибку выдаст)
39 Stepa86
 
11.07.08
16:30
(35) жжошь =)
RegExp.Pattern = "n.{1,5}$";  

Значения в фигурных скобках - минимвальное и максимальное количество повторений
40 Живой Ископаемый
 
11.07.08
16:33
Ай, блин, ваще тупим....
Если без регекспов то так:
   ном=СтрДлина(АнализируемСтроку);
   Пока ном<>СтрДлина(АнализируемСтроку)-5 Цикл
       Если КодСимвола(Сред(АнализируемСтроку,ном,1))=КодСимвола("n") Тогда
           // Тут заменяем

           прервать;
       КонецЕсли;
       ном=ном-1;
   КонецЦикла
41 Живой Ископаемый
 
11.07.08
16:34
(39) Понел, спасибо.. а то я не понимал как..
42 Stepa86
 
11.07.08
16:37
(41) http://www.providers.ru/articles/php/regexp-intro.html

вдруг пригодится...
43 Живой Ископаемый
 
11.07.08
16:38
(39) Но все равно.. например вот из такой строки
"My e-mails is anso@mail.ru and anso@usa.netn"
И твой и дурацкий мой шаблон выделит "netn", а нужно только последнюю "n"


Либо: из
"My e-mails is anso@mail.ru and anso@usa.nent"
Нужно выделить "nt", а будет выделено "nent"

Можно как-то с таким справиться?
44 НЕА123
 
11.07.08
16:40
Длина = СТрДлина(Строка);

Для к = 1 по Длина Цикл
  Поз = Длина - к +1;
  Если КодСимвола(Строка,Поз) = КодСимвола("n") Тогда
      Строка = Лев(Строка,Поз-1) + "N " + Сред(Строка,Поз+1);
      Прервать;
  КонецЕсли;
КонецЦикла
45 Живой Ископаемый
 
11.07.08
16:41
Вообще конечно даже не "nt" а просто только одну последню  "n"
46 Живой Ископаемый
 
11.07.08
16:42
(44) Зачот!
47 Stepa86
 
11.07.08
16:43
(43) если все же через Регэкспы воевать, то Excecute() вернет массив (коллекцию чего то там), берем тока последний и вуаля (или бляяяя, если где то накосячили)
48 Контакт
 
11.07.08
16:45
Для ПЯтницы есть снесхождения в моем случаи что при поиске в строке есть пробел. например "Kjffgfdn fjdg fjd n100"
49 Живой Ископаемый
 
11.07.08
16:49
(47) Э... Ну хорошо, получили мы допустим "ntnt"... Каким РегЕкспом из этого поулчить "ntN t"?
50 Stepa86
 
11.07.08
16:51
я подозреваю, что можно написать как
RegExp.Pattern = "n\s\d";

- находит последовательность символ n, пустой символ за ним (пробел или табуляцию) и цыфру
51 НЕА123
 
11.07.08
16:56
ежели " n" все же несколько.

стр = СтрЗаменить(Строка," n", Символы.ПС);
КолвоСтрок = СтрЧислоСтрок(стр);
Если КолвоСтрок = 1 Тогда //нету " n" то и нечего делать
;
Иначе
   КонцеваяСтрока = "N " + СтрПолучитьСтроку(стр,КолвоСтрок);
   Строка = Лев(Строка,СтрДлина(Строка) - СтрДлина(КонцеваяСтрока) + 2) + КонцеваяСтрока;
КонецЕсли;
52 relbler
 
11.07.08
17:37
Цикл ном=0 по 4
ОбратныйНомер=СтрДлина(Строка)-ном
Симв=Сред(Строка,ОбратныйНомер,1)

  если КодСимвола(Симв)=КодСимвола("n"); Тогда
    НоваяСтрока= Лев(Строка,ОбратныйНомер)+"N "+Прав(Строка,ОбратныйНомер+1);
  КонецЕсли
КонецЦикла
53 relbler
 
11.07.08
17:39
На строку короче 5 символ
и отсутсвие символа n можно поставить отдельную проверку