Существует, вероятно, более изящное решение, но это - то, что я придумываю первое, что пришло на ум:
string myString = "ThisIsMyCapsDelimitedString";
for (int i = 1; i < myString.Length; i++)
{
if (myString[i].ToString().ToUpper() == myString[i].ToString())
{
myString = myString.Insert(i, " ");
i++;
}
}
На самом деле просто не используйте символ @, используйте его, когда вы вызываете функцию Repopulate . Пример:
function x = fun1(a,m)
x = fun2(a,m);
end
function y = fun2(b,n)
y = n(b);
end
, который мы называем:
> fun1([1 2 3], @sum)
6
См. Документацию для Передача аргументов дескриптора функции
Обратите внимание, что вы можете проверить, является ли аргумент дескриптором функции, с помощью: isa (m, 'function_handle ')
. Поэтому вы можете сделать свою функцию Repopulate более гибкой, приняв как дескриптор функции, так и имя функции в виде строки:
function x = fun(a,m)
if ischar(m)
f = str2func(m);
elseif isa(m,'function_handle')
f = m;
else
error('expecting a function')
end
x = fun2(a,f);
end
, которую теперь можно вызывать в обоих направлениях:
fun1([1 2 3], @sum)
fun1([1 2 3], 'sum')