[添付ファイル一覧]
[全ページの添付ファイル一覧]
- increment.pls
- 格納ファイル名:attach/4D6163726F2FC5EAB9C62F313934_696E6372656D656E742E706C73
- ページ:Macro/投稿/194
- 格納ファイル名:attach/4D6163726F2FC5EAB9C62F313934_696E6372656D656E742E706C73
- MD5ハッシュ値:0cd2e4f4cba3c9d5bc9517c8a1b2d564
- サイズ:1.8KB (1857 bytes)
- Content-type:application/octet-stream
- 登録日時:2009/03/28 15:58:07
- アクセス数:328
- MD5ハッシュ値:0cd2e4f4cba3c9d5bc9517c8a1b2d564
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
| | use strict;
use warnings;
use List::Util qw/max/;
if (IsTextSelected() == 0) {
# not selected -> select previous line
GoLineTop();
BeginSelect();
Jump(ExpandParameter('$y') - 1);
BeginSelect(); # end select
}
unless (GetSelectColmFrom() == 1 && GetSelectColmTo() == 1) {
MsgBox(sprintf(
"select correctly!\nSelectColmFrom(%d) and SelectColmTo(%d) must be 1",
GetSelectColmFrom(), GetSelectColmTo()
));
exit(0);
}
my $y = max(GetSelectLineFrom(), GetSelectLineTo());
my $lines = abs(GetSelectLineFrom() - GetSelectLineTo());
# save selection
my $prev_line = GetSelectedString(0);
# save previous selection
Jump(GetSelectLineFrom());
BeginSelect();
Jump(ExpandParameter('$y') - $lines);
BeginSelect(); # end select
my $prev2_line = GetSelectedString(0);
# return cursor
Jump($y);
# split with numbers
my @prev2 = split(/(\d+)/, $prev2_line);
my @prev = split(/(\d+)/, $prev_line);
# check if they are analyzable
if (@prev2 != @prev) {
MsgBox("can't analyze!");
exit(0);
}
# inclement each element
my $result = '';
for (my $i = 0; $i < @prev2; $i++) {
my $prev = $prev[$i];
my $prev2 = $prev2[$i];
if ($prev2 eq $prev) {
# identical strings => copy it
$result .= $prev2
}
elsif ($prev2 =~ /^\d+$/ && $prev =~ /^\d+$/) {
# number => inclement it
if (length($prev2) == length($prev) &&
($prev2 =~ /^0\d+$/ || $prev =~ /^0\d+$/))
{
# begins with 0 => format new string in the same way
$result .= sprintf('%0*d', length($prev2), $prev + ($prev - $prev2));
}
else {
# simple inclement
$result .= $prev + ($prev - $prev2);
}
}
else {
MsgBox("can't analyze!");
exit(0);
}
}
# insert new string
InsText($result);
# select new string
BeginSelect();
Jump(ExpandParameter('$y') - $lines);
BeginSelect(); # end select
|