WindVoiceの日記: 「読めてしまう文章」の工作
すらど日記は久しぶりだなぁ……
Microsoft Wordのオブジェクトを使うと、日本語の単語分解ができるという情報のをネットで見かけたので、少し前に話題になった「読めてしまう文章」を作ってくれる短いプログラムを書いてみました。
①Visual Studio 2012を起動して、Visual Basicの新しいアプリケーションを作成します。フォームにテキトボックス(TextBox1)と、ボタン(Button1)を配置します。
②「ソリューションエクスプローラー」でプロジェクトの右クリックメニューから「参照の追加..」を選択して、「COM」⇒「タイプライブラリ」にある、「Microsoft Excel xx.x Object Library」と「Microsoft Word xx.x Object Library」をチェックしてOKボタンを押します(つまり、PCにWordとExcelがインストールされていなければなりません)。
③下にあるプログラムを書きます。
④[F5]で起動してウインドウが表示されたら、テキストボックスに何か日本語の文章を書いて、ボタンを押します。
⑤あなたが書いた文章の下のほうに、シャッフル済みの文章が追記されます。
たとえば、最初の段落をシャッフルするとこんな感じになります。
Mfsrcotoi Wrod の おぶじぇくと を つかう と 、 にほんご の たんご ぶんかい が できる と いう じほょうう の を ねっと で みかけた ので 、 すしまこえ に わだい に なった 「 よめて しまう ぶしょんう 」 を つくって くれる みかじい ぷぐろらむ を かいて みしまた 。
Visual Basicのコードは以下の通りです。
再利用はご自由にどうぞ。Visual Studio Express 2012で動作を確認しています。
Imports Microsoft.Office.Interop
Imports System.Text
Public Class Form1
Dim wd As New Word.Document
Dim ex As New Excel.Application
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TextBox1.AppendText(vbCrLf & "↑↑↑これをシャッフル↓↓↓" & vbCrLf)
wd.Range.Text = TextBox1.Text
For Each tango In wd.Paragraphs(1).Range.Words
Dim yomigana As String = StrConv(ex.GetPhonetic(tango.Text), vbHiragana)
If yomigana.Length > 3 Then
Dim moji = yomigana.ToCharArray
Dim temp As Char
For i = 1 To moji.Length - 2
Dim r As Integer = (moji.Length - 3) * Rnd() + 1
temp = moji(i)
moji(i) = moji(r)
moji(r) = temp
Next
yomigana = moji
End If
TextBox1.AppendText(yomigana & " ")
Next
End Sub
Private Sub Form1_FormClosed(sender As Object, e As FormClosedEventArgs) Handles MyBase.FormClosed
wd.Close(False)
ex.Quit()
End Sub
End Class
「読めてしまう文章」の工作 More ログイン