JavaScript NNで日本語文字を1つづつ切り出すには?
[上に]
[前に]
[次に]
とびお
[E-Mail]
1999/10/12(火) 11:35:49
Javascriptで日本語文字を1文字づつ切り出したいのです。
過去の履歴(「JavaScriptで半角カナを判断するには?」)を検索して
ソースも確認しましたがNNでは日本語文字を切り出せませんでした。
NN4.0x以上と限定しています。
どなたか教えていただけませんか?
#IEでのsubstr、charAtと同様に動作するものを求め入ています。
CHARSET=x-sjis の宣言はしています。
よろしくお願いいたします。
i18nx
1999/10/12(火) 13:51:12
charCodeAtでユニコード番号を取得すれば良いのでは。
例えば返ってきたコード番号がFF66-FF9Dの範囲なら半角カナと識別出来るはずです。
IE4や5でもcharCodeAtさえサポートしていれば同じように動作するでしょう、多分。
後、下のURLに、同じ仕組みの変換フォームを置いている人がいたと思います。
私には使い方が良く解からなかったのですが、参考になるかもしれないですね。
http://www.cypress.ne.jp/rwreki24/rwss/ware/transform.html
i18nx
1999/10/12(火) 14:15:16
すみません、半角カナの判別方法についてのご質問かと思い込み、そのことばかり書いてしまいました。
> Javascriptで日本語文字を1文字づつ切り出したいのです。
につきましてはよくわかりません。
私の環境(WinNT4、NC4.6)では、substrもcharAtもIEと同じ動作を
しているように思われます。
ただあんまり詳しいわけじゃないので、どなたかフォローお願いします。
Aurai
[E-Mail]
1999/10/14(木) 03:43:19
function copy(targetstring,targetindex,targetlength,i,j,k,l){
l = '漢';
if (l.length == 2){
j = 0;
for (i=0;i<targetindex;i++){
l = escape(targetstring.substring(j,j+1)).substring(1,2);
if (l=='8'||l=='9'||l=='E'||l=='F')
j += 2;
else
j += 1;
}
k = j;
for (i=0;i<targetlength;i++){
l = escape(targetstring.substring(k,k+1)).substring(1,2);
if (l=='8'||l=='9'||l=='E'||l=='F')
k += 2;
else
k += 1;
}
} else {
j = targetindex;
k = parseInt(targetindex) + parseInt(targetlength);
}
l = targetstring.substring(j,k);
return l;
}
こんな関数はどうでしょう
Netscapeはいつから2byteコードを一文字と認識するようになったんでしょうか
TAKI
1999/10/14(木) 03:59:15
>Netscapeはいつから2byteコードを一文字と認識するようになったんでしょうか
↓こんな話がありました
../199908/99080051.htm
とびお
[E-Mail]
1999/10/14(木) 09:10:43
[[解決]]
i18nxさん、Auraiさん、TAKIさん レスありがとうございます。 とびおです。
Auraiさんのソースで出来ました!!(ちょこっと変えてます)
ブラウザ依存の部分をまず日本語文字でチェックする(変数l)という発想がすごい!
もう感激 感激 ☆★☆
文字の切り出し練習のページを作ったので皆さんもお試しください
本当にありがとうございました
************* ソースはここから ***************
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=x-sjis">
<TITLE>文字の切り出し練習</TITLE>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function cutLetter(targetstring,targetindex,targetlength){
var i = 0;
var j = 0;
var k = 0;
var l = '漢';
var targetstring = document.myform.txt1.value;
var targetindex = parseInt(document.myform.txt2.value);
var targetlength = parseInt(document.myform.txt3.value);
if (l.length == 2){
j = 0;
for (i=0;i<targetindex;i++){
l = escape(targetstring.substring(j,j+1)).substring(1,2);
if (l=='8'||l=='9'||l=='E'||l=='F')
j += 2;
else
j += 1;
}
k = j;
for (i=0;i<targetlength;i++){
l = escape(targetstring.substring(k,k+1)).substring(1,2);
if (l=='8'||l=='9'||l=='E'||l=='F')
k += 2;
else
k += 1;
}
} else {
j = targetindex;
k = parseInt(targetindex) + parseInt(targetlength);
}
l = targetstring.substring(j,k);
document.myform.txt4.value = l;
return false;
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<FORM name="myform">
<H1>文字の切り出し練習</H1>
文字列:<INPUT type="text" name="txt1" value="" size=70 maxlength="256"><BR>
切り出し開始位置:<INPUT type="text" name="txt2" value="0" size=5 maxlength=5>
切り出し文字数:<INPUT type="text" name="txt3" value="1" size=5 maxlength=5>
<INPUT type="button" name="btn1" value="実行" onClick="cutLetter()"><BR><BR>
===> 切り出し文字列:<INPUT type="text" name="txt4" value="" size=70 maxlength="256">
</FORM>
</BODY>
</HTML>
************* ここまで ***************
[上に]
[前に]
[次に]