- PR -

文字列の全角判定について

投稿者投稿内容
未記入
会議室デビュー日: 2007/08/28
投稿数: 18
投稿日時: 2007-09-12 16:03
VS2005のC++/CLIで開発をしているものです。

文字列に全角が入っているか判断したいのですが、
その様な、メソッド等をもし御存知でしたら、御教授下さい。

@String^ a = "あいうえお"
AString^ a = "123あいう"
BString^ a = "12345abc"

この場合、@Aを全角として判断する。


初心者の質問ですが、宜しくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-09-12 16:35
全角の定義がわかりませんが、StringInfo クラスとか過去ログとかいろいろ参照すべきものはあります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-09-13 07:34
全角 半角 とは、表示する上でどれだけの幅を使用するか、という、ワープロ専用機から生まれた言葉です。
現在の事務用コンピュータではプロポーショナル フォントといって、一文字一文字幅が異なるフォントを使います。そのため、全角も半角もありません。

SHIFT_JISでは、文字の幅とバイト数が一致するため、バイト数を全角半角という言い方があります。C++/CLIではUTF-16で文字を扱うため、どの文字も最低16ビットの幅があります。

で、どのような意味で全角半角という言葉を用いているのでしょう?
そして、なんのために、その判定が必要なのでしょう?

あなたの抱える本当の問題はなんですか?
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2007-09-13 08:29
引用:

未記入さんの書き込み (2007-09-12 16:03) より:
VS2005のC++/CLIで開発をしているものです。

文字列に全角が入っているか判断したいのですが、
その様な、メソッド等をもし御存知でしたら、御教授下さい。


そんなものないです。そもそも全角・半角という言葉の明確な定義はありません。まず何を持って全角・半角とするのか、それを明確に定義してください。後はそのとおりに実装するだけの話です。

たとえば「ShiftJISコードで表現したとき、2バイトで表される文字を全角として扱う」と定義しても良いけど、それは暗に「ShiftJISで表現できない文字は扱はない」という前提に立ったものになります。画面上に表示したときの幅で定義しても良いけれど、特定の文字がどちらに扱われるか使用するフォントによって変わることになるでしょう。
隣の古柴
ベテラン
会議室デビュー日: 2004/06/04
投稿数: 94
投稿日時: 2007-09-13 09:10
横から失礼します〜

> 全角 半角 とは、表示する上でどれだけの幅を使用するか、という、ワープロ専用機から生まれた言葉です。

これは知っていましたが、自分も質問者さんと同じように全角だ半角だと
使っていました。(実際過去に質問してましたし...苦)

>現在の事務用コンピュータではプロポーショナル フォントといって、一文字一文字幅が異なるフォントを使います。そのため、全角も半角もありません。

そ・・、そうだったのですか(絶句

自分の語句の用法の仕方は、言ってみれば「失敗は成功のマザー」って言
い放った、かのお方みたいなもんでしたね。。。
未記入
会議室デビュー日: 2007/08/28
投稿数: 18
投稿日時: 2007-09-13 10:56
わかりにくい説明をしてしまいまして申し訳ありませんでした。
C++/CLIでの文字の扱いが全然わかっていませんでした。
皆様の御意見、非常に勉強になりました。

たまたま今回やりたいことと同様のものが見つかりましたので
載せておきます。

文字については、わかってない部分が多いので、これから勉強
して行きたいと思います。ありがとうございました。


http://www.atmarkit.co.jp/fdotnet/dotnettips/014strcheck/strcheck.html
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2007-09-13 11:08
引用:

たまたま今回やりたいことと同様のものが見つかりましたので
載せておきます。



ホントにこれで大丈夫?

Vista 以降(XP でも Windows Update すると?)、UTF-16 でも1文字≠2バイトな文字が出現しちゃってるのはご存知ですか?

こんな安易な実装じゃ、そういった文字をまともに扱うことは出来ませんが、大丈夫ですか?

こういうことがあるから、口うるさく「(あなたの言う)全角・半角の定義は?」とたずねられたりするわけです。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2007-09-13 11:18
引用:

隣の古柴さんの書き込み (2007-09-13 09:10) より:
これは知っていましたが、自分も質問者さんと同じように全角だ半角だと
使っていました。


同じ数字に見える文字でも「ASCIIコードのアレ」と「いわゆる全角のアレ」があるので、それを区別してコミュニケーションを取るのには半角全角という表現は有効だと思いますよ。
「いわゆる全角のアレ」が数字っぽく見えることが問題なんだと思います。
数値を入力する部分に「いわゆる全角のアレ」を入れられたりするわけで。
ですので話を英数字に限定すれば「いわゆる全角のアレ」について何らかの手を加えたりする必要がある場合もありますよね。
でも、全ての文字については……全角半角の定義ってどこかでキッチリ定められてるんでしたっけ?
例えばウムラウトの付いたAはどっちでしょうね。

スキルアップ/キャリアアップ(JOB@IT)