
前回出来た!と思ったのですが、今度は「かな」「英字」「数字」ともに全角が0.5で認識されます。
どなたか直していただけませんか?
前回質問
http://oshiete1.goo.ne.jp/qa4613744.html
No.2ベストアンサー
- 回答日時:
var strCount = Math.ceil(strLength(str).toString() /2 );
serLength の状態で、全角 1 半角 0.5 でカウントするようになっているので、改めて 2 で割らなくても大丈夫ですよ。
var strCount = Math.ceil(strLength(str)).toString();
===========================================================
#1
g は付け忘れです。すみません。
改行文字、タブ文字などは含んでもいいかもしれないですね。
前回、お教えいただいた物を上記のとおりに変更し、更にはgを付け加え、めでたく今度こそ完成してしまいました。
うれしいです!
スペシャルサンクスフォーエバーです!
No.3
- 回答日時:
重ねてすみません #2 訂正です。
「使用箇所によっては」改行文字、タブ文字なども含んでもいいかもしれないですね。文書内のテキストを扱うだけでしたら、
[\u0020-\u007E\uFF61-\uFF9F] の範囲で十分です。
ヌル文字や、制御文字なんかが来たら、TypeError を投げたほうが良いと思います。
charCodeAt もアイデアとしては良いんですが、これも残念ながら Unicode で取得できることは保障されていません。
今回お答え下さったプロの方ってやっぱり謎な頭脳を持ってるなぁと感動しました。実は皆様にお答え下さった文章の約2割程度しか理解出来なかったのですが皆様のおかげで当初の目標を達成できました★
今後、ことあるごとに読み返し少しずつ吸収できればと思います。
どちらの方の意見が一番良かったのか実は知識がなさ過ぎてわからないのですが実際こんな知識の自分に都合が良かった回答を選ばせて頂きました。
この度は大変ご迷惑をおかけしてしまいましたが皆様の暖かいご回答に感謝いたします。
ありがとうございました!!
No.1
- 回答日時:
使ってるのは前回質問のNo.7のコードですか?
その辺はちゃんと書いてください。
> 今度は「かな」「英字」「数字」ともに全角が0.5で認識されます。
私の方では、そんな現象は起こらなかった("あああ"→3、"aaa"→2.5でした)です。
> var matches = str.match(/[\u0020-\u007E\uFF61-\uFF9F]/) || [];
ここの正規表現でgオプションが付いていないので
1文字目しか判別できていないのでしょう。(うっかり忘れたのだと思いますが。)
以下のように書いてみては。
//字下げに使ってる全角空白は消してください。
function strLength(str){
var matches = str.match(/[\u0020-\u007E\uF8F0-\uF8F3\uFF61-\uFF9F]/g) || [];
return str.length - matches.length / 2;
}
なお、私ならこんな風に書きます。(動作は同じ。)
function strLength(str) {
var len = 0;
for (var i = 0; i < str.length; i++) {
var c = str.charCodeAt(i);
//半角と言われるコードポイント範囲
if ( (0x00<=c && c<=0x7e) || (0xf8f0<=c && c<=0xf8f3) || (0xff61<=c && c<=0xff9f)) {
len += 0.5;
} else {
len += 1;
}
}
return len;
}
前回のNo.5のお礼で
> どこかこのような物を公開しているところなんてないんですかね?
といってたけど、それは回答文中に載せてました。
バイト数をカウントする物だけど2で割れば求めている結果になるはず。
●この度もお忙しい中ありがとうございます!
使ってるのは前回質問のNo.7のコードですか?
その辺はちゃんと書いてください。
●はい、No7のコードです。半角が0.5と認識されて感動したのですが全角も0.5という事に気がつきました。
> 今度は「かな」「英字」「数字」ともに全角が0.5で認識されます。
私の方では、そんな現象は起こらなかった("あああ"→3、"aaa"→2.5でした)です。
●こちらでは「あいうえお」→3と表示されるのですが、、、これを5と表示させたいです。
> var matches = str.match(/[\u0020-\u007E\uFF61-\uFF9F]/) || [];
ここの正規表現でgオプションが付いていないので
1文字目しか判別できていないのでしょう。(うっかり忘れたのだと思いますが。)
以下のように書いてみては。
//字下げに使ってる全角空白は消してください。
function strLength(str){
var matches = str.match(/[\u0020-\u007E\uF8F0-\uF8F3\uFF61-\uFF9F]/g) || [];
return str.length - matches.length / 2;
}
なお、私ならこんな風に書きます。(動作は同じ。)
function strLength(str) {
var len = 0;
for (var i = 0; i < str.length; i++) {
var c = str.charCodeAt(i);
//半角と言われるコードポイント範囲
if ( (0x00<=c && c<=0x7e) || (0xf8f0<=c && c<=0xf8f3) || (0xff61<=c && c<=0xff9f)) {
len += 0.5;
} else {
len += 1;
}
}
return len;
}
●たくさんありがとうございます!でもどちらも期待通り動きませんでしたがそのままアップロードじゃやっぱまずいのでしょうか。ちなみに//以下の日本語は消去しました。その他、変えてません。
前回のNo.5のお礼で
> どこかこのような物を公開しているところなんてないんですかね?
といってたけど、それは回答文中に載せてました。
バイト数をカウントする物だけど2で割れば求めている結果になるはず。
●どこをカスタマイズすればいいのかわかりませんでした。そのままアップロードして動かなくてあきらめました。ご面倒おかけしてすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 教えて!goo 幾つかの回答が表示されてないのですが 今現在でのgooでの回答は、 全角文字(含む英数字)で 何文字 1 2022/08/20 06:22
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- 数学 数学の三角比についての質問です。 (以前質問してくれ方ありがとうございまし た) 以前の回答何度もよ 4 2023/04/01 02:47
- Windows Me・NT・2000 半角数字で電話番号を入れてるのに半角数字と認識されず困ってます^^;ほかのさいとなどでは半角数字と認 3 2022/04/24 15:44
- その他(IT・Webサービス) Googleスプレッドシートの数式 5 2022/12/08 17:52
- 数学 場合の数、確率 29 導入問題 ( 円周上の鋭角三角形) 4 2023/07/06 18:00
- 英語 アルファベット順の4文字以上の英単語 10 2022/07/30 22:42
- iPhone(アイフォーン) アイホンのクリアキャッシュをしていますが半角英数字で記入してもまたクリアキャッシュしてくださいとでま 1 2023/05/24 15:47
- X(旧Twitter) 教えてgooの新規アカウント登録について 3 2023/03/28 23:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シンプルなweb版スタンプラリー...
-
jQuery UI Accordion Plugin(jQ...
-
URLのパラメータを取得しリンク...
-
jQueryのload()を使用して外部...
-
引数なしの関数で疑問です
-
javascript で乱数(文字)を発...
-
XMLの空白要素をJavas...
-
JavaScriptで文字列の特定文字...
-
アルファベットABCD…をスマート...
-
今度は全角が0.5で認識されてし...
-
google apps scriptの終了のさせ方
-
alert文に変数と文章を表示させ...
-
javascriptでiframeのURL変更は?
-
ASP.NET MVCでObjectをjsに渡す
-
AM,PMの時間表示について
-
ジェネレーターの作り方
-
GASでundefinedエラーが出ます
-
<a>タグのテキストを取得
-
自動でリンクを実行する
-
IEでもFirefoxでも動作する点滅...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#で、ContextMenuStripに動的...
-
ASP.NET MVCでObjectをjsに渡す
-
ローカルにあるファイルを検索...
-
C#OpenCv V4にのエラーに関する...
-
google apps scriptの終了のさせ方
-
イベントが初めの一回しか起き...
-
ジェネレーターの作り方
-
JavaScriptで文字列の特定文字...
-
javascriptでテーブルに追加し...
-
なぜmatchメソッドがエラーにな...
-
ASP.NETのコントロールの値をJa...
-
javascriptでiframeのURL変更は?
-
翌月を取得するGASが分かりません
-
1日1回だけ引けるjavascriptお...
-
商品コードを入力で、商品名、...
-
JavaScriptで平日のみをカウン...
-
jsによって検索プルダウン、都...
-
C# 演算 奇数と偶数 表現の仕方
-
GASでundefinedエラーが出ます
-
gas スプレッドシートがアクテ...
おすすめ情報