■64066 / inTopicNo.2) |
Re[1]: C# テキストファイル内の半角の文字列を変換 |
□投稿者/ 魔界の仮面弁士 (78回)-(2012/11/06(Tue) 22:23:17)
|
■No64064 (じゃむ さん) に返信
> 開発環境はビジュアルスタディオエクスプレス2010になります。
Visual Studio 2008 以降においては、『ビジュアル スタジオ』が正しい読みです。
Visual Studio 2005 以下(.NET 2003、.NET 2002、VS6、VS97)の頃は
『ビジュアル スタディオ』だったのですけれどね。
※Visual Studio日本語版の製品パッケージに、上記カタカナ読みが記載されています。
> c#でテキストファイルを一文字づつ読み込み、半角の文字列の前後に特定の語をつけて全角に変換したいです。
Unicode ベースになると、全角/半角の定義がややこしいことになってきますが、
使用する文字は、Shift_JIS 相当のものだけという前提でよろしいでしょうか?
それとも、あらゆる文字が入力されてくる可能性があるのでしょうか。
string f1 = "\uFF5F"; // 全角左白括弧
string h1 = "\u2985"; // 半角左白括弧
string f2 = "\uFFE6"; // 全角ウォン記号
string h2 = "\u20A9"; // 半角ウォン記号
string f3 = "\u3158"; // 全角ハングルWA
string h3 = "\uFFCD"; // 半角ハングルWA
string f4 = "\u2192"; // 全角右矢印
string h4 = "\uFFEB"; // 半角右矢印
> この時、半角の文字、一つ一つではなく、半角の文字列をそのまま全角の文字列に変換し、尚且つその前後に特定の語を付与したいです。
その「特定の語」が、変換元の文字列に含まれていた場合はどうしますか?
> あい@u@@e@お@k@ (@は仮の前後につける文字
> ではなく、
> あい@ue@お@k@
> のような形で変換します。
前者への返還までは出来ているのなら、
string a = "あい@u@@e@お@k@";
string b = a.Replace("@@", "")
のようにして置き換える手はありますけれどね。
> 文字を解析し、半角か全角か判定した後、
全角への変換は、下記の方法でできますね。
http://dobon.net/vb/dotnet/string/strconv.html
> 次の文字の判定に移るルーチンが組めずに困っています。
string source = "あいueおk";
foreach (char item in source)
{
}
のように、文字を char 型で受け取れば、順に処理できると思います。
> 何卒、ご教授宜しくお願いします。
http://www.tt.rim.or.jp/~rudyard/torii009.html
http://blogs.wankuma.com/jeanne/archive/2005/11/24/19566.aspx
こんな方法もあります。
// using Microsoft.VisualBasic;
// using System.Text.RegularExpressions;
string source = "あいueおk";
string pattern = "[\u0020-\u007E\uFF61-\uFF9F]+";
string result = Regex.Replace(source, pattern,
m => "@" + Strings.StrConv(m.Value, VbStrConv.Wide, 0) + "@"
);
Console.WriteLine(result); //『あい@ue@お@k@』
|
|