在MATLAB中除\ n之外的换行符

时间:2017-11-15 13:58:13

标签: matlab line-breaks

以下b变量似乎有一个与换行符相对应的最后一个字符,但它不是经典的' \ n'字符。对于使用此变量进行打印,这非常令人尴尬:

K>> b

b =

toto_titi


K>> fprintf('This strange variable (%s) is very strange !!!\n', b);
This strange variable (toto_titi
) is very strange !!!

确实,所需的印刷品将是:

This strange variable (toto_titi) is very strange !!!

下面,很少有观察到这个变量的事实:

K>> class(b)

ans =

char

K>> [b 'end']

ans =

toto_titi
end

K>> b(end)

ans =




K>> regexp(b,'_', 'split')

ans = 

    'toto'    'titi…'

我承认,我并没有真正理解' titi中的三个点...'但我想这是解释的一部分!!!

快速而肮脏的方法是删除导致换行符的最后一个不可见字符,但如果在其他应用程序中,b变量中的最后一个字符是" real"我们将失去这个最后一个角色(例如toto_tit代替toto_titi)。

存在python strip()的MATLAB等价物吗?

b变量中这个不可见的字符是什么?

编辑1: 来自rahnema1的一个好主意是确定这个不可见字符的ASCII码:

K>> double(b)

ans =

   116   111   116   111    95   116   105   116   105    13

K>> for i = 1 : 60
str = [num2str(i) ' ' char(i) '     '...
num2str(i+32) ' ' char(i+32) '     '...
num2str(i+64) ' ' char(i+64)];
disp(str)
end
1      33 !     65 A
2      34 "     66 B
3      35 #     67 C
4      36 $     68 D
5      37 %     69 E
6      38 &     70 F
7      39 '     71 G
8     40 (     72 H
9        41 )     73 I
10 
     42 *     74 J
11      43 +     75 K
12      44 ,     76 L
13 
     45 -     77 M
14      46 .     78 N
15      47 /     79 O
16      48 0     80 P
17      49 1     81 Q
18      50 2     82 R
19      51 3     83 S
20      52 4     84 T
21      53 5     85 U
22      54 6     86 V
23      55 7     87 W
24      56 8     88 X
25      57 9     89 Y
26      58 :     90 Z
27      59 ;     91 [
28      60 <     92 \
29      61 =     93 ]
30      62 >     94 ^
31      63 ?     95 _
32       64 @     96 `
33 !     65 A     97 a
34 "     66 B     98 b
35 #     67 C     99 c
36 $     68 D     100 d
37 %     69 E     101 e
38 &     70 F     102 f
39 '     71 G     103 g
40 (     72 H     104 h
41 )     73 I     105 i
42 *     74 J     106 j
43 +     75 K     107 k
44 ,     76 L     108 l
45 -     77 M     109 m
46 .     78 N     110 n
47 /     79 O     111 o
48 0     80 P     112 p
49 1     81 Q     113 q
50 2     82 R     114 r
51 3     83 S     115 s
52 4     84 T     116 t
53 5     85 U     117 u
54 6     86 V     118 v
55 7     87 W     119 w
56 8     88 X     120 x
57 9     89 Y     121 y
58 :     90 Z     122 z
59 ;     91 [     123 {
60 <     92 \     124 |

编辑2: 围绕rahnema1和excaza的想法:

。如果我们知道ASCII码(通过使用strrep):

K>> fprintf('This strange variable (%s) is very stange !!!\n', strrep(b,char(13),''));
This strange variable (toto_titi) is very stange !!!

。删除前导和尾随空格(使用strtrim):

fprintf('This strange variable (%s) is very stange !!!\n', strtrim(b));
This strange variable (toto_titi) is very stange !!!

0 个答案:

没有答案