在字符串中应用退格键

ere*_*lys 10 string matlab

我有一个包含退格的字符串.将它显示到命令行将"应用"退格,这样就不会看到每个退格区和紧接在它之前的非退格字符:

>> tempStr = ['aaab', char(8)]
tempStr =
aaa
Run Code Online (Sandbox Code Playgroud)

然而,删除操作操作仅在显示字符串时发生.它仍然有退格字符和'b',在其中:

>> length(tempStr)
ans =
 5
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个应用退格操作的最小(理想情况下是某种内置的字符串处理)函数:

>>f(tempStr)
ans = 
 'aaa'
Run Code Online (Sandbox Code Playgroud)

也可能有助于知道我有一个关于字母'a'到'z'加''和退格的枚举类(用于存储我自己的字母索引,与每个等相关联的图像).将这种退格删除操作作为超类的一种方法来处理其对象的向量,这真是太棒了.

Rat*_*ert 5

你可以使用while循环使用一个简单的函数来完成它:

function s = printb(s)

while true

    % Find backspaces
    I = strfind(s, char(8));

    % Break condition
    if isempty(I), break; end

    % Remove elements
    if I(1)==1
        s = s(2:end);
    else
        s(I(1)-1:I(1)) = [];
    end

end
Run Code Online (Sandbox Code Playgroud)

并且测试给出:

s = [char(8) 'hahaha' char(8) char(8) '!'];

numel(s)                 % returns 10

z = printb(s)            % returns 'haha!'

numel(z)                 % returns 5
Run Code Online (Sandbox Code Playgroud)

这不是真正的"最小",但就我的知识而言,我不认为这对于Matlab中的正则表达式是可行的.

最好,