回答編集履歴

1

追記

2020/02/18 09:23

投稿

otn
otn

スコア84633

test CHANGED
@@ -2,14 +2,24 @@
2
2
 
3
3
 
4
4
 
5
- `abc=${abc#000}`は、`${abc}`の先頭が`000`ならそれを削除したものということです。
5
+ `abc=${abc#000}`は、`${abc}`の先頭3文字が`000`ならそれを削除したものということです。
6
+
7
+ `abc=${abc#00}`は、`${abc}`の先頭2文字が`00`ならそれを削除したものということです。
8
+
9
+ `abc=${abc#0}`は、`${abc}`の先頭1文字が`0`ならそれを削除したものということです。
6
10
 
7
11
  3つ並べることで、`0001` `0012` `0123`などが`1` `12` `123`になります。
8
12
 
9
- `00001`も`01`になり`1`になりますね。
13
+ `00001`も1つ目の代入で`01`になり、3つ目の代入で`1`になりますね。
10
14
 
11
15
  つまり、先頭の6個以下のゼロが削除されます。
12
16
 
13
17
 
14
18
 
15
19
  先頭がゼロの数字文字列は8進数値とみなされるので、ゼロを消しているのでしょう。
20
+
21
+ #追記
22
+
23
+ これ、`abc`にもし`0`が入る可能性があれば、先頭ゼロの削除で空文字列になっちゃうので、足し算の時にエラーになりますね。
24
+
25
+ 対応方法は複数ありますが、そのあたりは大丈夫なのでしょうか?