我有一个包含退格的字符串.将它显示到命令行将"应用"退格,这样就不会看到每个退格区和紧接在它之前的非退格字符:
>> 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'加''和退格的枚举类(用于存储我自己的字母索引,与每个等相关联的图像).将这种退格删除操作作为超类的一种方法来处理其对象的向量,这真是太棒了.
你可以使用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中的正则表达式是可行的.
最好,
| 归档时间: |
|
| 查看次数: |
848 次 |
| 最近记录: |