Программирование в Mathematica
Потому, что не воспринимает правильно {"a" ~~ z__}, z__ - это шаблон для последовательности аргументов (элементов списка). Для строк есть команда StringReplace.
Потому, что не воспринимает правильно {"a" ~~ z__}, z__ - это шаблон для последовательности аргументов (элементов списка). Для строк есть команда StringReplace.на самом деле у меня и есть список из строк и шаблон хочется задавать для всей этой
последовательности.
Скажем так, заменить в последовательности строку "220" на строку "да", если после строки "220" где-то встретилась строка, начинающаяся с восклицательного знака.
Replace[{"1002", "220", "22", "!...."}, {x___, "220", y___, "!....", z___} -> {x, "yyyes", y, "!....", z}]
может для такого случая есть шаблон строки, начинающейся с конкретной буквы?
StringReplaceа эта, онаж еще и по подстрокам искать будет
на самом деле у меня и есть список из строк и шаблон хочется задавать для всей этой последовательности.
Речь была не о том. Что-то лень объяснять.
А сделать можно так:
Получится
StringJoin/@StringSplit[#, ""]&/@{"1002","220","22","!....","200"})
/. {x___, StringSplit["220", ""], y___, {"!", s___},z___} -> {x, "yyyes", y, {"!", s}, z})
{"1002", "yyyes", "22", "!....", "200"} ЗЫ А проще так:
{"1002","220","22","!....","200"}/.{x___, "220", y___, s_/;StringTake[s, 1]=="!",z___}->{x, "yyyes", y, s, z} спасибо
большое спасибо
большое спасибо
Nanana = {{1, 2}, {3, 4}, {5, 6}};
Tratata[n_Integer] := Module[{k = 0},
If[First[#] == n, k = Last[#]] & /@ Nanana;
If[k == 0, Print["Error in Tratata with n = ", n]; Return["Error "], Return[k]];
];
Tratata[n_Integer] := Module[{},
If[First[#] == n, Return[Last[#]]] & /@ Nanana;
Print["Error in Tratata with n = ", n];
Return["Error"];
];
Две, как мне кажется, одинаковые фунции, но в первой на запрос
Tratata[1] замена срабатывает, во второй нет...
Tratata[n_Integer] := Module[{k = 0},
If[First[#] == n, k = Last[#]] & /@ Nanana;
If[k == 0, Print["Error in Tratata with n = ", n]; Return["Error "], Return[k]];
];
Tratata[n_Integer] := Module[{},
If[First[#] == n, Return[Last[#]]] & /@ Nanana;
Print["Error in Tratata with n = ", n];
Return["Error"];
];
Две, как мне кажется, одинаковые фунции, но в первой на запрос
Tratata[1] замена срабатывает, во второй нет...
"If all else fails, read the instructions" (c)
Return exits only the innermost construct in which it is invoked
Можно так:
Return exits only the innermost construct in which it is invoked
Можно так:
Tratata[n_Integer] :=
Catch[Module[{}, If[First[#] == n, Throw[Last[#]]] & /@ Nanana
Print["Error in Tratata with n = ", n];
Return["Error"];];]
Return exits only the innermost construct in which it is invokedхочешь сказать он из внутреннего Ифа только выходит?
за вариант спасибо

Return вывел бы из блока, только если бы имел вид отдельного оператора, скажем, Return[2]. Так происходит в первом случае. А
If[First[#] == 1, Return[Last[#]]] & /@ Nananaдаст
{Return[2], Null, Null} Ясненько, спасибо.
Скажи, плиз, в математике есть что-то хорошее для перевода строки в число?
или это только через код символа можно сделать?
Скажи, плиз, в математике есть что-то хорошее для перевода строки в число?
или это только через код символа можно сделать?
А что, хелп уже кончился?
ToExpression
ToExpression
еслиб мне хелп во всем помогал, яб тут не спрашивала
считай, что не справилась с хелпом
спасибо
считай, что не справилась с хелпом
спасибо

paha73
почему не срабатывает вот такое правило?Replace[{"abd"}, {"a" ~~ z__} -> {"la-la-la"}];