![]() |
![]() |
![]() |
|
Найти в конце строке символ "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
|
и СокрЛП... и вааще v8: с помощью какой функции удалить запятую из строки
|
|||
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
|
||||
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 можно поставить отдельную проверку |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |