我已經開始在MATLAB中編程,最近試圖實現一個1337揚聲器般的發生器/字符串操作器只是爲了好玩。作爲一項挑戰,我試圖隨機更改每個角色的出現,以便並非所有「a」都變爲「@」。MATLAB循環來隨機修改字符串字符
看來我的嘗試在某種程度上起作用,因爲它非常隨意(但有時效率不高),但我相信還有更好的方法來完成這個任務。也許爲26個字符中的每一個添加更多的替代方案,並分別從它們中隨機選擇?
function O = obfuscate(s)
str = 'hello world';
for i=1:length(str)
randomNum = randi(26,1);
switch randomNum
case 1
str = regexprep(str, 'a', '@', 'once');
case 2
str = regexprep(str, 'b', 'l3', 'once');
case 3
str = regexprep(str, 'c', '<', 'once');
case 4
str = regexprep(str, 'd', '|]', 'once');
case 5
str = regexprep(str, 'e', '3', 'once');
case 6
str = regexprep(str, 'f', '|#', 'once');
case 7
str = regexprep(str, 'g', '6', 'once');
case 8
str = regexprep(str, 'h', '|-|', 'once');
case 9
str = regexprep(str, 'i', '!', 'once');
case 10
str = regexprep(str, 'j', '_/', 'once');
case 11
str = regexprep(str, 'k', '|{', 'once');
case 12
str = regexprep(str, 'l', '1', 'once');
case 13
str = regexprep(str, 'm', '|\/|', 'once');
case 14
str = regexprep(str, 'n', '/\/', 'once');
case 15
str = regexprep(str, 'o', '[]', 'once');
case 16
str = regexprep(str, 'p', '|*', 'once');
case 17
str = regexprep(str, 'q', '9', 'once');
case 18
str = regexprep(str, 'r', '|2', 'once');
case 19
str = regexprep(str, 's', '$', 'once');
case 20
str = regexprep(str, 't', '+', 'once');
case 21
str = regexprep(str, 'u', '|_|', 'once');
case 22
str = regexprep(str, 'v', '\/', 'once');
case 23
str = regexprep(str, 'w', '\X/', 'once');
case 24
str = regexprep(str, 'x', '%', 'once');
case 25
str = regexprep(str, 'y', '¥', 'once');
case 26
str = regexprep(str, 'z', '2', 'once');
end
O = str;
%fprintf('%s(%i)', str(i), randomNum);
end
有什麼建議嗎?
我不明白你是如何決定選擇更換?你能告訴我們簡單的輸入和預期的輸出嗎? –
當然。我已經硬編碼這個函數來使用'str ='hello world'',但是當你運行obfuscate('your text here')時你可以改變它成爲'str = s'來接受參數。根據要求,運行'hello world'這個函數可以產生不同的結果,因爲它是隨機的。一個可能的結果是:'| - | 3llo w [] rld' – theflarenet
'這樣並不是所有的「a」都變成了「@」'......好,但'hello world'與'不是全部'有什麼關係一個」 ? –