
いつもお世話になっております。
テキスト内の全角数字5桁のみを該当の半角数字5桁に置換する方法を探しています。
OS:Win
テキストエディタ:sakuraエディタ、秀丸
例)
----------------------------------------
あいうえお01234かきくけこ99さしすせそ
↓
あいうえお01234かきくけこ99さしすせそ
----------------------------------------
正規表現で行えばいいと思い、置換文字列を
[0-9][0-9][0-9][0-9][0-9]
あるいは
[0-9]{5}
にしましたが、置換後の文字列が分かりません。
試しに検索で上記の文字列を試すと、該当箇所がマークされるので、
置換前の文字列は合っています。
置換後の文字列をご教授願えますでしょうか。
※テキストエディタで無理ならプログラム組みます。
VBScriptを考えていますが、他に良い言語があれば併せて教えてください。
No.7ベストアンサー
- 回答日時:
No.4 & No.5 です。
質問文中の「のみ」を見逃していました。
6桁や10桁は変換してはいけないのですね。
方法を考えてみたのですが、やや手順が長くなってしまいました。
なお、テキストファイルを処理するので表は存在しないものとしています。
(存在する場合は単語の先頭や末尾を考慮する必要がある)
1.全角数字以外にはさまれた全角数字5文字を変換する
(1) 検索でワイルドカード使用
(2) 検索する文字列は「[!0-9][0-9]{5}[!0-9]」
(3) 「検索先」「メイン文書」を順にクリック
(マクロの記録中ならここでいったん閉じて再び検索)
(4) 検索する文字列を「[0-9]{5}」にする
(5) 「検索先」「現在の選択」を順にクリック
(6) 閉じる
(7) 半角に変換
これで文頭以外は変換できるはずです。
2.文頭
文頭に全角数字5文字がある場合、それより前に文字がないため上記手順では選択されません。
そこで、(2)の検索する文字列を「<[0-9]{5}[!0-9]」にしてもう一度上記手順を実行するか、いっそのこと手動で選択して半角に変換するか等を行う必要があります。
何度も使用するなら記録マクロにしておけばよいと思います。
ところで、サクラエディタはマクロとしてWSHが使用可能だと聞いたことがあります。
ということは、たとえばNo.6様提示のソースを改造したり、VBScriptで書いたりしてマクロとして使用してもよいのではないでしょうか。
ご回答ありがとうございます。
補足に答えて下さって感謝です。
おかげさまで実現したいことが可能となりました。
今回はあまりテキスト内を操作したくなかったこともあり、
Wordの検索&半角機能を使用することとします。
No.8
- 回答日時:
そういえばサクラエディタはWSH(js,vbs)が使えましたね。
サクラエディタでやるならこれでできると思います。
------------------------------------
var convTable = {
"0":0,
"1":1,
"2":2,
"3":3,
"4":4,
"5":5,
"6":6,
"7":7,
"8":8,
"9":9
};
var text_a = Editor.GetSelectedString(0);
var text_b = text_a.replace(/([^0-9]|^)([0-9]{5})(?=[^0-9]|$)/g,
function ($0,$1,$2){
return $1 + $2.replace(/[0-9]/g , function(s){return convTable[s];}) ;
}
);
Editor.InsText(text_b);
------------------------------------
使い方は、上記マクロを拡張子.jsで保存してサクラエディタに登録し、
サクラエディタ上で置換したい範囲を選択(全文ならCtrl+A)した状態で、
このマクロを実行してください。
あと、"あいうえお01234か01234きくけこ" のように
0-9以外の文字が1文字だけ間にある場合に置換できなかったので少しパターンを修正しました。
ご回答ありがとうございます。
修正コード拝見いたしました。
とても参考になります。
ほんと、「ありがとうポイント10Pt」っていうのはどこいっちゃったんでしょうかね?笑
進呈させてください!10Pt!
No.6
- 回答日時:
JScriptならreplaceメソッドの置換後テキストに関数を使えるからまだ書きやすいかな。
replace メソッド
http://msdn.microsoft.com/ja-jp/library/cc409988 …
------------------------------
var convTable = {
"0":0,
"1":1,
"2":2,
"3":3,
"4":4,
"5":5,
"6":6,
"7":7,
"8":8,
"9":9
};
var text_a = "あいうえお01234かきくけこ99さしすせそ123456ああ";
var text_b = text_a.replace(/([^0-9]|^)([0-9]{5})([^0-9]|$)/g,
function ($0,$1,$2,$3){
return $1 + $2.replace(/[0-9]/g , function(s){return convTable[s];}) + $3 ;
}
);
WScript.Echo(text_b);
------------------------------
PowerShellの-replace 演算子も、置換後文字列に処理が書けるみたいなので
やろうと思えばできるのではないかと思います。
ご回答ありがとうございます。
これは・・・イイですねぇ。
コードも書いてくださって、助かります。
個人的にですが、ありがとうポイント10Pt差し上げますm(_ _)m
No.5
- 回答日時:
Word2007の文字種の変換は、リボンでは
「ホーム」タブ-「フォント」グループの中にあります。
「上付き」の右です。
ショートカットキーは Alt H 7 (2003互換では Alt O E)です。

この回答への補足
ご回答ありがとうございます。
できました!
丁寧に教えてくださって誠に感謝しております。
ただ、今度は下記のような現象になってしまいます。
----------
あいうえお01234かきく99けこ555555さしすせそ0123456789たちつ
↓
あいうえお01234かきく99けこ555555さしす0123456789たちつ
----------
1)6桁が頭から5桁分だけヒットして、そこだけ変換する羽目になる
2)10桁続いていた場合、5桁+5桁と認識されて、変換する羽目になる
これはもうどうしようもないですかね・・・^^;?
No.4
- 回答日時:
質問者様のご期待に添えるかどうかはわかりませんが、思いつくところを答えさせていただきます。
1.Word等を使う
このような処理はMicrosoft Word等のワープロで行うとよいのではないでしょうか。
Word2007であれば、
検索→検索オプションを表示→「ワイルドカードを使用する」をチェック→検索する文字列は「[0-9]{5}」→「検索先」「メイン文書」を順にクリック→閉じる→文字種の変換で半角に
でできます。(正規表現ではなくワイルドカードですが)
OpenOffice.org Writer等の互換ソフトでもおそらく同様のことができると思います。
2.VBScript以外のプログラミング言語
C#やVB(.NET以降)で使用できるRegEx.Replaceメソッドでは、マッチした文字列を加工して置換後の文字列として使用することができるようです。
下記のリンク先では、それを利用して全角から半角への変換を行っています。
http://www.atmarkit.co.jp/fdotnet/dotnettips/105 …
3.VBScriptを使うとすると
VBScriptだとマッチと変換を繰り返すのでしょうか。そうであるなら正規表現置換一発よりはかなりややこしくなりそうですね。でも全角と半角の変換なので変換後の文字列にはマッチしないこともありそれほど複雑にはならないのではないでしょうか。
全角半角変換もBASP21といったライブラリやVBScriptでの記述例があるようです。
この回答への補足
ご回答ありがとうございます。
とりえあずすぐできそうな(1)をやってみたのですが、、、
すごく実現したいことに近い気がします!!
ただ、分からなかったので、補足欄にて質問です。
>~→文字種の変換で半角にでできます。
これってどうすればできますか??
(その手前までやって、検索ウィンドウ閉じたらヒット文字列が選択されている状態です)
当方Microsoft Office Word 2007です。
何卒よろしくお願いいたします。
No.3
- 回答日時:
#2のものです。
前の答えは間違っています。
Sub 全角数字5桁のみを該当の半角数字5桁に置換す()
Dim k As Long
Dim aaa As String, bbb As String
Dim re As Object
aaa = "あいうえお12345かきくけこ99さしす9951せそ" & _
"あああ95142いいい1234567ううう1江23尾" 'test data
Debug.Print "●●● "
Debug.Print aaa
Set re = CreateObject("VBScript.RegExp")
re.Global = True
re.Pattern = "([^0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([^0-9])"
aaa = re.Replace(aaa, "$1$2■$3■$4■$5■$6■$7")
'■は、変換される文字に絶対現れない文字にする
Debug.Print aaa
For k = 0 To 9
bbb = CStr(k)
re.Pattern = StrConv(bbb, vbWide) & "■"
aaa = re.Replace(aaa, bbb)
Next k
Debug.Print aaa
Set re = Nothing
End Sub
No.2
- 回答日時:
こんにちわ
面白そうだったので、EXCEL.VBAで試してみました。
Sub 全角数字5桁のみを該当の半角数字5桁に置換す()
Dim k As Long
Dim aaa As String, bbb As String
Dim re As Object
aaa = "あいうえお12345かきくけこ99さしす9951せそ" & _
"あああ95142いいい1234567ううう1江23尾" 'test data
Debug.Print "●●● "
Debug.Print aaa
Set re = CreateObject("VBScript.RegExp")
re.Global = True
re.Pattern = "[^0-9]([0-9])([0-9])([0-9])([0-9])([0-9])[^0-9]"
aaa = re.Replace(aaa, "$1■$2■$3■$4■$5■")
'■は、変換される文字に絶対現れない文字にする
Debug.Print aaa
For k = 0 To 9
bbb = CStr(k)
re.Pattern = StrConv(bbb, vbWide) & "■"
aaa = re.Replace(aaa, bbb)
Next k
Debug.Print aaa
Set re = Nothing
End Sub
ご回答ありがとうございます。
VBAも考えてみたのですが、操作対象のファイル数が多い&内容量も多いのでちょっと諦めてました。
というかめんどくさかったというか・・・
けれどやりようによっちゃあ、ご提示のソースが役に立つかもしれません(^^)
>'■は、変換される文字に絶対現れない文字にする
これだけは・・・難しいですね。
ひらがな、漢字は当然無理ですし、場合によっては■や◆や★が内容に含まれています。。。
いっそ漢字でめっっちゃ難しくて本当に本当に使われないような漢字を探して、
それを使用するのもいいかもしれないですね。
(例えば癮とか麑とか・・・読み方も分かりません。笑)
ちょっと試してみます!(うまくいけば後ほどベストアンサーにするかもです。かも、です。)
No.1
- 回答日時:
パターンの一部をそのまま参照するようなものは多いのですが、大文字小文字/全角半角といった変換や計算までできるのは、ほとんどありません。
Perlはその「計算結果で置換できる」側の言語な上に、その気になれば1行でできるくらいなのですが、Windows標準には入っていないので、環境作りが面倒かもしれません
ご回答ありがとうございます。
VBScriptだとごちゃごちゃになってしまうので、私もPerlを考えました。
しかし開発環境・使用環境を考えて二の足を踏んでます。
>その気になれば1行でできるくらいなのですが
そうですか。驚きです。あまりPerlに詳しくないもので^^;
暇を見つけて、自宅でPerlの検証をしてみようかと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) Excelで校閲をする方法はあるでしょうか(取扱説明書への掲載禁止用語の確認) 3 2022/06/11 22:51
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
このQ&Aを見た人はこんなQ&Aも見ています
-
正規表現で、全角文字を半角文字にする方法
Perl
-
全角英数字を半角英数字に変換したい
Perl
-
gas 全角数字を半角数字に変換
JavaScript
-
-
4
正規表現で半角数字1桁のみを全角数字に変換
JavaScript
-
5
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
6
InDesignの半角文字列を全角に変換する方法
画像編集・動画編集・音楽編集
-
7
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
8
Winmerge ファイルの中身は同じなのに黄色くなる
その他(OS)
-
9
英数字のみ全角から半角に変換
その他(Microsoft Office)
-
10
Excelで重複データの件数ではなく、何番目かを求める方法
Excel(エクセル)
-
11
イラストレーターで辺の中心にポイントを設ける方法
画像編集・動画編集・音楽編集
-
12
半角記号、全角記号を含む正規表現を作れなくて困っています。
Java
-
13
データベース関係で、データの洗い替えとはどのような事を行うことでしょう
IT・エンジニアリング
-
14
ワードの条件で改行をさせるには
Word(ワード)
-
15
縦書き文章で『―』表示を『|』にするには
Excel(エクセル)
-
16
ファイルを参照するとき、初めに開かれるフォルダ
Windows 7
-
17
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
18
Worksheets メソッドは失敗しました。のエラー処理のやり方
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像生成AIのプロンプトの作り...
-
数学、プログラミング、物理、...
-
vba クリップボードクリアにつ...
-
pip --versionがエラーになる
-
Python 3.12.2 か一番最新のパ...
-
Google ColaboでGUI作成
-
pythonの実行に関する質問
-
CSVファイルの複数行削除
-
GoogleAppsScript文字列置換の...
-
Pythonについて。
-
OS入ってる機器のソフト・アプ...
-
パイソンのソースコードをChatG...
-
MOVEコマンドでサブフォルダー...
-
プログラミング言語のバージョ...
-
AIがプログラムする時代のプロ...
-
趣味がプログラミングだと言っ...
-
pythonについて(初心者です)
-
itエンジニアに就職希望で未経...
-
pythonでAmazonのほしいものリ...
-
Kotlin言語について。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
趣味がプログラミングだと言っ...
-
pythonについて(初心者です)
-
プログラミング言語のバージョ...
-
AIがプログラムする時代のプロ...
-
MOVEコマンドでサブフォルダー...
-
画像生成AIのプロンプトの作り...
-
Google ColaboでGUI作成
-
VBAでパワーシェルを実行したい...
-
Python... 環境設定 初心者です...
-
COPYコマンドで、最後に1文字...
-
10進数から2進数に変換 例 185 ...
-
FILMORAを使っているのですがテ...
-
pythonでhtmlファイルの指定文...
-
HTMLソースが表示のページのも...
-
⚠️至急です!⚠️ Yahoo!知恵袋の...
-
Pythonでの文字列からfloatへの...
-
Webサイト内に埋め込んだmp4動...
-
テキストファイルの1行目のみを...
-
ネットワークフォルダの中身を...
おすすめ情報