• ベストアンサー

半角文字と全角文字の区別

以下のように、Stringに文字列を読み込んで、 400文字(半角)以上の場合は、メッセージを出したいのですが、 全角でも400文字まで、NGになりません。 どうすれば、判定できるのでしょうか? 教えて下さい。 例 JTextArea txtArea = new JTextArea(); String memo = txtArea.getText(); if(memo.length()>400){ // 400文字(半角)以内にして下さい。 // NG ! }else{ // OK ! }

質問者が選んだベストアンサー

  • ベストアンサー
  • ct27
  • ベストアンサー率62% (48/77)
回答No.1

文字数ではなくてbyteを返すようにして比較すれば良いと思います。 int leg = txtArea.getText().getBytes().length; if( leg > 400 ){・・・・ もし文字コードを指定するならこんな感じで。(ここではMS932を指定) int leg = txtArea.getText().getBytes("MS932").length;

pikodon
質問者

お礼

出来ました!!! ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 全角スペースの判定について

    全角のスペースを文字コードにて判定したいのですが、 うまく判定できません。 0x8140だと思うのですが。。。。 以下のソースを実行すると半角は通るのに全角は NGになってしまいます。どなたがご存知方はご教授のほど宜しくお願いいたします。 public class test {  public static void main(String[] args) {      String s = "| | |";      for (int i = 0; i < 4; i++) {           System.out.println("" + s.charAt(i));   }      char c = s.charAt(1);    if (0x8140 == c) { System.out.println("全角判定OK");    } else { System.out.println("全角判定NG");    }   c = s.charAt(3);    if (0x0020 == c) { System.out.println("半角判定OK");    } else { System.out.println("半角判定NG");    }  } }

    • ベストアンサー
    • Java
  • 半角と全角の文字数について

    str=new String("教えてgoo"); s=str.length; このようにすると、「s」の中には「6」という数字が代入されるのですが、 全角を2文字として計算するにはどうすればいいのでしょうか。 「s」の中には「9」が入るようにしたいんです。 よろしくお願いします。

  • 文字列に半角・全角スペースが入っているかをチェックする関数のおかしな結

    文字列に半角・全角スペースが入っているかをチェックする関数のおかしな結果? 下記コードのように「文字列に半角・全角スペースが入っているかをチェックする関数」を作りました。 $textに入る文字列に半角・全角のスペースが入っているかをチェックします。 -------------------------------------------- my $text = "東 京"; if( isSpace($text) ) {   print "スペースあり"; } else {   print "スペースなし"; } sub isSpace{   my $str = shift || return(undef);   if( $str =~ /.*[\s ]+.*/ ){     return(1);   }else{     return(0);   } } -------------------------------------------- しかしなぜか1行目を my $text = "メ"; とするとスペースが入っているという結果になってしまいます。 なぜ「メ」が入ると半角もしくは全角のスペースとみなされてしまうのでしょうか? また、どうすれば正しくチェックできるようになりますか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • 文字列から半角スペースと全角スペースを取り除く処理

    DBから取得した文字列に半角スペースか全角スペースが 含まれている場合取り除きたい、と考えています。 以下の様なロジックを考えているのですが、 こんな感じで良いのでしょうか。 普通は、どの様にするのでしょうか? アドバイスなどありましたら、お願い致します。m(__)m private String test(String str) {  StringBuffer sb = new StringBuffer();  char[] chr = str.toCharArray();  for(int p=0;p<chr.length;p++) {   if( chr[p] == ' ' || chr[p] == ' ' ) continue;   sb.append(chr[p]);  }  return sb.toString(); }

    • ベストアンサー
    • Java
  • 全角半角あわせて3文字

    全角半角が混在している文字列の左から3文字を取得したい場合にいい方法はないでしょうか? mb_substr関数で第3パラメータはバイト数で指定するようです。 関数リファレンスでは「最大文字数」って表現になってます。 http://php.net/manual/ja/function.mb-substr.php 半角なら文字数=バイト数ですが、全角だと指定の半分の文字数になります。 最大だから間違ってはないですが、文字数じゃないよな‥‥っていつも思ってます。 いったん半角→全角にして、6バイト分を切り出すのはできます。 でも、英数字も全角半角混在してるので元の文字列を壊したくないのです。 mb_substrの第3パラメータを6から3まで、mb_strlenが3になるまで回すのもやってみました。 でも、なんかスマートじゃないんですよ‥‥。 なにかこう、スマートないい手はないでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • VBScriptである文字列に半角文字が含まれているかどうか調べる方法について

    VBScriptである文字列に半角文字が含まれているかどうか調べる方法について、ネットで調べてソースコードを拾ってきたのですが... IFの条件でなぜ全角、半角が判断できるか分かりません。教えてください。お願いします。 iLen = Len(str1) iLenByte = 0 '--- 文字列のバイト数 For i = 2 To iLen strField = Mid(str1, i, 1) iCode = Asc(strField) If iCode > 0 Then '--- 半角文字 Else '--- 全角文字 End If Next

  • 全角半角を意識した文字分割

    A列           B列   C列  D列  E列     あいうえおかきくけこ  あ   いう  えお  か アイウエオカキクケコ    アイウ   エオ  カキ ク あイウえオかきくけこ    あ   イウえ  オか き 先ほど同じような質問を一度しているのですが、 A列に全角半角混在のテキスト項目があります。 B列、C列、D列、E列に以下のルールで分割したいのですが、 Excel関数で 実現可能でしょうか? 可能な場合は式をご教授して頂けますでしょうか。宜しくお願い致します。 ※全角をバイト数指定で分割して文字化けしないように全角半角を考慮して分割した いと考えております。 B列(半角3文字)  A列3桁目が半角の場合は半角3文字 A列3桁目全角の場合は半角2文字(全角1文字) C列 (半角4文字) A列4桁目が半角の場合は、左端4桁目~半4文字分 A列4桁目が全角の場合は、左端3桁目~半角4文字 D列(半角4文字) A列7桁目が半角の場合は、左端7桁目~半4文字分 A列7桁目が全角の場合は、左端6桁目~半角4文字 E列(半角2文字) A列11桁目が半角の場合は、左端11桁目~半2文字分 A列11桁目が全角の場合は、左端10桁目~半角2文字

  • 左から3文字だけ全角にし残りの6文字は半角のままにしたい。

    全部半角の"123456789"と言う文字列があります。 これを"123456789"にしたいのですがうまくいきません。 Sub 左から3文字目までを全角にする() Dim 文字列 As String 文字列 = "123456789" 文字列 = StrConv(Left(文字列, 3), vbWide) End Sub これを実行すると 文字列は"123"になってしまいます。 "123456789"にするにはどうすればいいのでしょうか? よろしくお願い致します。

  • (Swing)JTextFieldを半角のみ入力可能にする方法

    JTextField で半角のみ入力可能なチェックを行いたいのですがどうもうまくいきません。 下記のソースは、入力桁数制限チェックと、全角チェックを行っているのですが 半角を入力した後に全角を入力すると、JTextFieldの値が消えてしまいます。 どなたがご指導よろしくお願いします。 もしくは、下記ソースの他によいチェック方法等ありましたら、教えてくださいm(__)m よろしくお願いいたします。 ======================================= userText.setDocument( new LimitedDocument( 8) ); /** * 指定文字数・全角チェック */ private class LimitedDocument extends PlainDocument { int limit; LimitedDocument( int limit ){ this.limit = limit; } public void insertString( int offset, String str, AttributeSet a ) { try{ String wholeText = getText( 0, getLength() ); // 文字数チェック byte[] b = wholeText.getBytes(); if( b.length >= limit ){ return; } char c = str.charAt(0); // 文字が半角だったら挿入する。 if (c < 256 || (c >= 0xff61 && c <= 0xff9f)) { super.insertString(offset, String.valueOf(c), a); } else { } } catch( BadLocationException e ) { System.out.println( e ); } } } =======================================

    • ベストアンサー
    • Java
  • VB2008で全角半角の判定

    VB2008で全角半角の判定 VB6 では下記のようにして判定していましたが、VB2008では どのようにすればよいのかお教えください。  dim moji as string dim zhN as integer  zhN = LenB(StrConv(moji, vbFromUnicode)) mojiには1文字格納されており、  半角なら zhN = 1 全角なら zhN = 2 となる。  これをVB2008で実現する方法がわかりません。  よろしくお願いします。

ゲージ圧力とは
このQ&Aのポイント
  • ゲージ圧力とは、タンクや配管に付いた圧力ゲージの圧力の値を指します。
  • タンクの圧力計が0.1MPaだった場合、ゲージ圧力は絶対圧力から大気圧を引いた値になります。
  • 絶対圧力は絶対温度から273℃を引いた値で表されます。
回答を見る

専門家に質問してみよう