回答編集履歴

2

正規表現を見直して数字の大小の順に並ぶようにしました。

2023/03/26 09:23

投稿

YellowGreen
YellowGreen

スコア731

test CHANGED
@@ -1,6 +1,3 @@
1
- (注意)確認不足で、ソートの順が数字の大小になっていませんでした。
2
- 修正しますので、このままのご利用はお避けください。
3
-
4
1
  順に処理をしたいファイル名がNo111111, No222222, No333333のように名前の前半が数字以外で後半が数字のみになっている場合、フォルダ内の全てのファイルを配
5
2
  列に取得してしまってから、正規表現で名前の数字部分を取り出して配列をソートしておいて、後は配列の並び順に処理をするという方法でいかがでしょうか。
6
3
  修正の例は、
@@ -14,9 +11,9 @@
14
11
  while (Ssfiles.hasNext()) {
15
12
  files.push(Ssfiles.next());
16
13
  }
17
- files.sort((a, b) => a.getName().replace(/.+(?=\d)/,'') - b.getName().replace(/.+(?=\d)/,''));
14
+ files.sort((a, b) => a.getName().replace(/.+?(?=\d)/,'') - b.getName().replace(/.+?(?=\d)/,''));
18
15
  for (const file of files) {
19
16
  ```
20
17
  に書き換えて、その次の行からは、
21
18
  whileループがforループに変わっただけなので処理はそのままでいいと思います。
22
-
19
+ 処理の順序は、数字の大小なのでNo1111111はNo4よりも後に実行されます。

1

一部動作確認不足でした。

2023/03/26 09:11

投稿

YellowGreen
YellowGreen

スコア731

test CHANGED
@@ -1,5 +1,8 @@
1
- に処理をしたいファイル名No111111, No222222, No333333のように名前の前半が数字以外で後半が数字になっている場合、フォルダ内の全てのファイルを配列に取得してしってから、正規表現名前の数字部分を取り出て配列をソートしておいて、後は配列の並び順に処理をするという方法でいかがでしょうか
1
+ (注意)確認不足で、ソートの順が数字の大小になっていませんでし
2
+ 修正しますので、このままのご利用はお避けください。
2
3
 
4
+ 順に処理をしたいファイル名がNo111111, No222222, No333333のように名前の前半が数字以外で後半が数字のみになっている場合、フォルダ内の全てのファイルを配
5
+ 列に取得してしまってから、正規表現で名前の数字部分を取り出して配列をソートしておいて、後は配列の並び順に処理をするという方法でいかがでしょうか。
3
6
  修正の例は、
4
7
  ```javascript
5
8
  while (SsFiles.hasNext()) {
@@ -16,5 +19,4 @@
16
19
  ```
17
20
  に書き換えて、その次の行からは、
18
21
  whileループがforループに変わっただけなので処理はそのままでいいと思います。
19
- 処理の順序は、数字の大小なので、No4など桁数が少ないファイル名でもNo111111より後になります。
20
22