Microsoft Visual StdioのWindowsフォームアプリケーションにてtextBox1に「あいうえお」と入力し、button1を押した場合textbox2に「aiueo」と出るようにする場合どうしたら良いでしょうか?
また例外として特定のキーワード、例えば「○○○りんご○○○」と入力した場合は「○○○おいしい!○○○」のようにローマ字に変換せずに特定の文字に変換するにはどうしたらいいでしょうか?
分かりづらい文ですがよろしくお願いします。
'あ'→'a', 'い'→'i' ... ってな対応表(辞書)を用意するだけ。
キーワード変換も同様。文字列の変換表を用意し、入力文字列中に変換表にある文字列をその部分として含むかを調べて置き換えるだけ。
あ、もちろん音便変化は規則に合わせにゃなりません。
# ちいさな'っ'は直後の子音を重ねるとか。
>>επιστημηさん
返信ありがとうございます。
なるほど、対応表ですか!
恥ずかしながらその処理の仕方が分からないので参考になる記事がありましたら教えていただけませんか?
そういえば肝心の使用言語が抜けていました、すいません。
c++ Windowsフォームアプリケーションです。
> 処理の仕方が分からないので
System.Collections.Generic.Dictionary<Key,Value> でも使ってくださいな。
# 辞書に相当するものならなんでもかまいません
>>επιστημηさん
System.Collections.Generic.Dictionary<Key,Value>ですか・・・?
ごめんなさい、よくわからないです;;
自分なりに考えてみてローマ字からひらがなへの変換はできるようになりました
ですがひらがなからローマ字へは変換することができません
たとえば下のプログラムでtextBoxの中身のひらがなを一文字ずつ拾ってきて判定する場合は
if文の条件はどうしたらいいでしょうか?
String^inbox = textBox1->Text;
String^outbox;
int length = textBox1->Text->Length;
for(i=0;length>i;i++){
if(inboxの[i]番目が「あ」なら)
outboxに「a」を追加
if(inboxの[i]番目が「い」なら)
outboxに「i」を追加
if(inboxの[i]番目が「う」なら)
outboxに「u」を追加
・
・
・
}
textBox2->Text = outbox;
ifを乱用した方法ですが相互変換できるようになりました
なので一応解決にチェックをしておきます
ありがとうございまいた
解決になっていませんでした;;
> ifを乱用した方法ですが
プログラマのするこっちゃねぇ
using namespace System;
using namespace System::Text;
using namespace System::Collections::Generic;
int main() {
String^ kana = L"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわをん"
L"がぎぐげござじずぜぞだぢづでどばびぶべぼ";
String^ romans = L"a,i,u,e,o,ka,ki,ku,ke,ko,sa,shi,su,se,so,ta,chi,tsu,te,to,na,ni,nu,ne,no,"
L"ha,hi,fu,he,ho,ma,mi,mu,me,mo,ya,yu,yo,ra,ri,ru,re,ro,wa,wo,n,"
L"ga,gi,gu,ge,go,za,ji,zu,ze,zo,da,zi,zu,de,do,ba,bi,bu,be,bo";
array<String^>^ roman = romans->Split(L',');
Dictionary<Char,String^> dic = gcnew Dictionary<Char,String^>();
int i = 0;
for each ( Char ch in kana ) dic.Add(ch,roman[i++]);
String^ input = L"このぶんをろおまじにする";
StringBuilder^ builder = gcnew StringBuilder();
for each ( Char ch in input ) builder->Append(dic[ch]);
String^ result = builder->ToString();
Console::WriteLine(L"in :{0}\nout:{1}", input, result);
}
>>επιστημηさん
>プログラマのするこっちゃねぇ
返す言葉もございません;;
c++を始めて一週間ほどですがプログラミングの奥深さを日々感じております、
書いていただいたプログラムも調べながら少しづつ理解していきたいと思います、
ありがとうございました
ところでこのコード、C++じゃありません。C++/CLIです。
ツイート | ![]() |