JavaScriptで全角文字の判定をするには?
[上に]
[前に]
[次に]
モルモン卿
1998/12/08(火) 19:27:45
JavaScriptで「ある文字列が全角文字のみで構成されているか?」を判定するにはどうしたらいいのでしょうか?
Win/Mac、IE/NNを問わない方法があったら教えてください。
Aurai
[E-Mail]
1998/12/09(水) 01:23:00
アスキーキャラを全て検索してみるとか……
まる高
[E-Mail]
[HomePage]
1998/12/09(水) 09:32:30
前にもこんな質問がありましたね。
長いですけど、↓を使ってみてください。この位のコードを書かなければ対処できないと
思います。
/**********************************************************************
* 処理 :漢字判定のセット *
* true : " " 以上 *
**********************************************************************/
function JudgeKanji( Object ){
var Count ;
var String ;
String = Object.value ;
// Explorerの時、
if( navigator.appName == "Microsoft Internet Explorer" ){
return JudgeKanji_IE( String ) ;
}
// Netscapeの時、
else{
return JudgeKanji_Netscape( String ) ;
}
}
function JudgeKanji_IE( String ){
var Count ;
var Letter ;
for( Count=0; Count < String.length; Count++ ){
Letter = String.charAt( Count ) ;
if( Letter < " " && Letter != '\n' && Letter != '\r' )
return false ;
}
return true ;
}
function JudgeKanji_Netscape( String ){
var Count ;
var Letter ;
var kl ;
kl = Klength( String ) ;
for( Count=0; Count < kl; Count++){
Letter = KcharAt( String,Count );
if( Letter < " " && Letter != '\n' && Letter != '\r' )
return false ;
}
return true ;
}
function Klength( String ){
var Count ;
var Length ;
var Letter, LetterBin ;
Length = 0 ;
for( Count=0; Count < String.length; Count++ ){
Letter = escape( String.charAt( Count ) ) ;
LetterBin = eval( "0x"+Letter.charAt( 1 ) ) ;
if ((LetterBin==8) || (LetterBin==9) || (LetterBin==14) || (LetterBin==15) ) Count++ ;
Length++ ;
}
return Length ;
}
// 指定1文字取得(Shift JIS)
function KcharAt( String,Position ){
var Length ;
var Count ;
var CutString ;
var Letter, LetterBin ;
Length = 0 ;
for( Count=0; Count < String.length; Count++ ){
CutString = String.charAt( Count ) ;
Letter = escape( CutString ) ;
LetterBin = eval( "0x"+Letter.charAt( 1 ) ) ;
if( (LetterBin==8) || (LetterBin==9) || (LetterBin==14) || (LetterBin==15) ){
CutString = CutString+String.charAt( Count+1 ) ;
Count++ ;
}
if( Position==Length ) break ;
Length++ ;
}
return CutString ;
}
モルモン卿
1998/12/09(水) 20:10:17
ありがとうございます。
でも、まる高さんのスクリプトだと、ネコミ4.05が常にtrueを返してしまうのですが・・・
まる高
1998/12/10(木) 12:06:21
あひゃ。じゃ、↓のように変更してみてください
function JudgeKanji_Netscape()の
if( Letter < " " && Letter != '\n' && Letter != '\r' )
を
if( (Letter < " " || Letter.length==1) && Letter != '\n' && Letter != '\r' )
に置き換えてください
モルモン卿
1998/12/10(木) 15:28:32
できました!ありがとうごいますざいます!
でも・・・・たびたび申し訳ないのですが、
半角カタカナがNNだと半角として扱われ、
IEだと全角になってしまいます。
半角カタカナの判定はどうすればいのでしょうか?
やす ~y(^o^)oO○
1998/12/11(金) 01:39:34
>半角カタカナがNNだと半角として扱われ、
>IEだと全角になってしまいます。
>半角カタカナの判定はどうすればいのでしょうか?
IEだとソース表示でみたら化けてません?
これってEUCコードだと思うのですが・・・
NNは持ってきたときにSJISに変換してる(と思う)
EUCコードは半角カナが2バイトなのでこうなっちゃうんじゃないでしょうか?
ホームページをSJISで書いてみたらどうでしょう?
モルモン卿
1998/12/11(金) 09:52:17
その通り、EUCです。
でも、DB周りの事情があってEUCでなければならないのです・・・
なんかいい解決策はないものでしょうか?
[上に]
[前に]
[次に]