カタカナで入力の際に全角と半角を区別したいのですがどうしたらよいでしょうか?
下記のような数字は全角と半角を区別できるようです。
abc abc
123 123
http://boueki.xsrv.jp/etc/mojisuucount/mojisuuj2 …
No.7ベストアンサー
- 回答日時:
十分というわけではないですが。
function strLength(str){
var matches = str.match(/[\u0020-\u007E\uFF61-\uFF9F]/) || [];
return str.length - matches.length / 2;
}
=================================================
escape について
http://www.openspc2.org/JavaScript/escape/index. …
No.6
- 回答日時:
「勘違いしていたよう」と書かれていたからもう解決されたんですね?
ぼくは最初
「このプログラムで半角カナも全角カナも同じ1文字として
カウントされるのはなぜか」
というあなたの質問に回答#2でそのまま答えたんですよ。
で、その回答#2への再質問をあなたがされて、
>「%u が現れたら文字数に1を加えてiに3を加えている処理のところ」
>とはどこでしょうか?
と聞かれたので、その質問の部分を
(あなたがお書きになったプログラムから抜き出して)
回答#4に書いたんですよ。
// から後に質問を書いたのは、
JavaScript は // から後ろが注釈(説明)になるからですよ。
もともとあったプログラムの一部を抜き出して書いたので、
そこをアップして動かしても動かないと思いますよー。
Web で動くプログラムは、
ちょこちょこっと書くと動けるから作ったり、
どっかから拾ってくる人多いんですけど、
どこの誰が使うかわからないので、
よほどの「プロ」でも難しいですよ。
あなたの情報が盗まれたり、
あなたのコンピューターがおかしくされたり、
他人のコンピューターがおかしくなったり、
他人の情報が別の人に行ったりしますよ。
そういう事件がいろいろあるのご存知ですよね。
「こういうものはどこかにないですか」
ということですが、ホントに失礼ですが今のあなたの状態で、
どこかでそれらしいプログラムをもらってきて
世間に公開するのはちょっとあぶないと思いますよ~~。
あなたも「1年ぐらい」とおっしゃってますが、
自分がなにをどうやっているのか分かって、
他の誰からもつけいられない自信がしっかり出来るまでは、
自分でじっくり腰をすえて勉強された方がいいと思いますよ。
JavaScriptは、危険をおかしてインターネットに公開しなくても、
手元で動かせますよ。
あなたの最初のプログラムを、
HTMLごと保存してローカルにおいてダブルクリックして開いたら
動きましたよ。
(当然半角カナも1文字でカウントされるという問題は
そのままですが)
やさしい本としてはこんなのがありますよ。
http://www.amazon.co.jp/First-JavaScript-%E9%A0% …
詳しくまたありがとうございます!
解決はしていないのですが半角カナ認識がこんなに難しいことかと知らず皆様にご迷惑をおかけしてすみません。
自分としては単にモバオークションに出品する際のタイトルを何度も何度も計算しなおして書き直すのが凄い時間がかかったので、個人利用でこういった物があればいいなと思ったんです。
アップロードしなくてもプログラムが動くとは知りませんでした。
また他人の情報が別の人に行ったりと危ないとは知りませんでした。
ここをこう直せば解決ですよ、みたいな簡単なことかと気軽に質問してしまいすみませんでした。
No.5
- 回答日時:
わざわざescapeした文字列を解析するのって面倒なだけでメリット無くないですか?
charCodeAtで文字コード(Unicodeコードポイント)を取得して
場合分けで数え上げるのが素直な方法だと思うのですが。
例えばこんな感じ。
http://www.kanaya440.com/contents/tips/javascrip …
あと
> var strCount = Math.ceil(strLength(str).toString() / 2);
ここのtoStringはあっても誤動作はしませんが無駄です。
せっかく文字列にしてるのにすぐ数値演算してるから、
数値→文字列→数値という不必要な変換がされます。
ありがとうございます!
そうなんですかぁ。
皆様プロなのですね。
いろいろ質問して回答いただき更に難しい語句が出てきて更に混乱している自分がいます。
自分で作るのは無理かなぁと、もちろん超勉強して1年後とかに出来るかもしれませんが、、、。生半可な知識でご迷惑をおかけしてすみません。
どこかこのような物を公開しているところなんてないんですかね?
No.4
- 回答日時:
もう解決しているようですが、ご自分で書いたプログラムじゃなかったんですね。
失礼しました。
このプログラムの文字数計算はむちゃくちゃ(不必要に)難しくしているので、削除でいいならそれでいいでしょう。
以下の // 以下に説明を書いて見ました。
せっかく書いたので載せます。
★
function strLength(strSrc){
len = 0; // 長さを格納する変数、ゼロクリア
strSrc = escape(strSrc); // strSrc をエスケープする
// strSrc が「abc」だったら「abc」のママ
// strSrc が「あいう」だったら「%u3042%u3044%u3046」
// strSrc が「アイウ」だったら「%uFF71%uFF72%uFF73」
// strSrc が「aあア bいイ cうウ」だったら「a%u3042%uFF71 b%u3044%uFF72 c%u3046%uFF73」
for(i = 0; i < strSrc.length; i++, len++){ // i が 0 から srcSrc の長さまで、i と len を1ずつ増やしながら
if(strSrc.charAt(i) == "%"){ // srcSrc の i 文字番目が「%」で
if(strSrc.charAt(++i) == "u"){ // その次の文字が u だったら半角英数字以外なので
i += 3; // 3文字飛ばす(さっき1文字飛ばしているので、結果的に %uxxxx を飛ばして次の字を見に行く)
len++; // 長さに1加算する(ここに漢字も全角かなも半角カナも来るので、半角カナも1文字でカウントされる)
}
i++; // i を 1 加算する(半角全角共通。結果的に半角英数字の場合は i と len が1、それ以外の場合は 2 加算)
}
}
return len;
}
function showLength( str,name ) {
var strCount = Math.ceil(strLength(str).toString() / 2); // さっき strLength で得られた数字を2で割ると、半角は0.5、全角は1になる
// unicode 文字コード表
// あ ... 3042 い... 3044 う ... 3046
// ア ... FF71 イ ... FF72 ウ ... FF73
本当にありがとうございます!
そうなんです、自分で作ったわけではなくこちらで拾ったコードを2つ貼り付けてちょっと自分でカスタマイズしてみました。
http://blog.tofu-kun.org/070627210315.php
教えて下さった物の//以下を削除しましてUPしたら
http://boueki.xsrv.jp/etc/mojisuucount/mojisuuj2 …
こんな感じになりました。
たぶん全然お話にならないことをしてるんですよね、、、。
ごめんなさい。
No.2
- 回答日時:
escape関数で、半角英数字(ASCII)は、そのままになり(「aAbBcC」=>「aAbBcC」)その他の字は %uxxxx(xxxx は4桁の16進数、Unicodeコードポイント)になるようです。
半角カナも、全角カナも、%uxxxxになるからそうなるんですね。
半角カナは %uFF61~%uFF9F になるので、その文字が入ってきたら特別な処理をすればいいと思います。
具体的に言うと %u が現れたら文字数に1を加えてiに3を加えている処理のところで、%uFF61~%uFF9Fが来たら特別に文字数を0.5加えることにするとか。
そんな難しいルールがあるのですね。。。
読んでも難しいのにそれを言葉に出来るなんては凄いです。
ちなみに
「%u が現れたら文字数に1を加えてiに3を加えている処理のところ」
とはどこでしょうか?
具体的な式とか教えて頂くのは無理ですよね。
ご迷惑おかけしてすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- その他(Microsoft Office) 英数字のみ全角から半角に変換 4 2023/07/28 14:48
- Access(アクセス) Access で半角スペースと全角スペースの区別について 3 2022/11/05 23:54
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- iOS これは日本語入力の大発明ですか? 7 2022/12/21 07:17
- 数学 点Oを中心とし、半径が5である円Oがある。この円周上に2点A、B をAB=6となるようにとる。また、 5 2023/08/16 23:32
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAによる第3、4水準文字の判定...
-
VB.NET2003 テキストボックスに...
-
正整数の半角数字かどうか判定する
-
正規表現での入力文字数と連続...
-
エクセルVBA/ Formatで文字列が...
-
VC#でテキストボックスに変数の...
-
Access VBAで、数字だけをチェ...
-
gas 全角数字を半角数字に変換
-
CListCtrl の特定のセル(アイ...
-
javascript 文字列の最後から1...
-
csvファイルを読み込み、該当項...
-
JavaScriptで、実行するたび値...
-
PDFフォームで条件つき金額を表...
-
Node.jsのWebプログラム(javasc...
-
列を非表示にするマクロが実行...
-
サブウインドウをフルスクリー...
-
if(1){...}とはどういうことで...
-
JSPの処理の途中で、JavaScript...
-
〔Excel:VBA〕マクロの実行が異...
-
リンクを右クリックするとペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「終了していない文字列型の定...
-
VB.NET2003 テキストボックスに...
-
Access VBAで、数字だけをチェ...
-
gas 全角数字を半角数字に変換
-
VBAによる第3、4水準文字の判定...
-
正整数の半角数字かどうか判定する
-
ハイフンだけ置換したい。
-
エクセルVBA/ Formatで文字列が...
-
Visual Basic 6.0 のテキストボ...
-
エクセル 半角英数6文字以上 ...
-
JavaScriptに関する質問です。 ...
-
禁止文字チェック
-
正規表現について
-
外字のチェック
-
Javascript 全角カナ+半角スペ...
-
Excel VBA カタカナ セル判定...
-
文字認証の問題
-
入力された文字を1文字ずつチ...
-
C#でTextBoxに数値のみ入力可能...
-
VC#でテキストボックスに変数の...
おすすめ情報