Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 为什么我的MATLAB代码会复制除空格以外的所有符号(它会删除空格)?_Arrays_String_Matlab - Fatal编程技术网

Arrays 为什么我的MATLAB代码会复制除空格以外的所有符号(它会删除空格)?

Arrays 为什么我的MATLAB代码会复制除空格以外的所有符号(它会删除空格)?,arrays,string,matlab,Arrays,String,Matlab,我的目标是获取一个加密字符串并复制所有符号。因为唯一的输入是小写的,所以我忽略了考虑大写字符 我将代码设计为使用重复符号预测最终结果的总长度,这就是为什么我将punct(一个包含字符串中符号总数的变量)添加到字符串长度中。迭代时,如果代码遇到符号,则应将加密字符串的后续部分保存为sub,并在下一个索引中复制它遇到的符号。最后,从索引1到复制符号的加密字符串与保存的子字符串连接在一起,我已测试该子字符串在所有符号情况下都能工作,介于类型和数字之间。我的一个问题是,这将不适用于空格,它会删除而不是复

我的目标是获取一个加密字符串并复制所有符号。因为唯一的输入是小写的,所以我忽略了考虑大写字符

我将代码设计为使用重复符号预测最终结果的总长度,这就是为什么我将
punct
(一个包含字符串中符号总数的变量)添加到字符串长度中。迭代时,如果代码遇到符号,则应将加密字符串的后续部分保存为
sub
,并在下一个索引中复制它遇到的符号。最后,从索引1到复制符号的加密字符串与保存的子字符串连接在一起,我已测试该子字符串在所有符号情况下都能工作,介于类型和数字之间。我的一个问题是,这将不适用于空格,它会删除而不是复制空格。我逐级查看了代码,认为这可能是由于strcat的
。这让我感到困惑,因为空格应该像对待任何其他ASCII字符一样对待。当我得到一个错误,它说这是由于数组超出范围

我使用的测试用例是
encrypted=hlnv.ylwb.lmxv.glow.nv
hlnv-ylwb-lmxv-glow-nv
。在这两个
中,punct
都是4,因为每个字符中有4个非字母字符

criticallength = length(encrypted) + punct;
ii = 1;
while ii <= criticallength
    if encrypted(ii) < 97 || encrypted(ii) > 122
        sub = encrypted(ii + 1:end);
        encrypted(ii + 1) = encrypted(ii);
        encrypted = strcat(encrypted(1:ii + 1), sub);
        ii = ii + 1;
    end
    ii = ii + 1;
end
criticallength=长度(加密)+点;
ii=1;
而ii 122
sub=加密(ii+1:结束);
加密(ii+1)=加密(ii);
加密=strcat(加密(1:ii+1),sub);
ii=ii+1;
结束
ii=ii+1;
结束

是,
strcat
根据以下内容删除尾随空格:

对于字符数组输入,strcat将删除尾随的ASCII空白 字符:空格、制表符、垂直制表符、换行符、回车符和 表单提要。对于单元格和字符串数组输入,strcat不会删除 尾随空白


这意味着
strcat('A','B')
结果
'AB'
,而
strcat('A','B')
结果
'AB'
。但是,在您的情况下,您不需要调用
strcat
。相反,您可以简单地使用数组连接,如返回所需输出的
['A''B']
'A B'

请包含
加密的
点播的定义,以便我们可以运行您的代码并看到它工作。特别是,MATLAB中的字符串和字符数组之间存在差异,这在这里非常相关。“我使用的测试用例是
encrypted=hlnv.ylwb.lmxv.glow.nv
”,这省略了我所询问的关键信息。请注意,这不是有效的MATLAB语法。要么是
e='str'
,要么是
e=“str”
,这两种情况都会在MATLAB中导致截然不同的行为。请具体一点,发布一个独立完整的代码块,这样我们就可以复制粘贴它了。这是避免不精确的最好方法。看见