JAVAでの文字列判定で、全角文字以外を入力した場合は、エラーとして扱いたいのですが、その方法がわかりません。

教えてください。よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんなんではいかんでしょうか?


public class test {
public static void main(String args[]) {
String s = args[0];
char[] sc = s.toCharArray();
for ( int i=0; i<sc.length ; i++ ) {
if (String.valueOf(sc[i]).getBytes().length < 2 ) {
System.out.println("error:");
} else {
System.out.println("sucess:");
}
}

}
}
    • good
    • 1

文字列から、1文字ずつ取り出して文字コードを調べるという方法が一番簡単そうです。



だけど、全角文字以外エラーというのは、種類が多すぎて大変そうです。

とりあえず、半角カナを判定する方法が過去の質問にありますので参考にしてみて下さい。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=183352
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q半角カナを全角カナに変換したい

表題の通りです。
先輩から引き継いだエクセルのデータが、全角カナと半角カナとの両方を、使い分けなどではなく使用しているものだったので、半角カナを全部、全角カナに変換したいと考えています。
置換機能で50音全部を置換するのは大変ですので、一度に変換する良い方法があれば教えてください。
また、全角アルファベットを、普通の英字(半角アルファベット?)にも変換したいと思っています。

Aベストアンサー

=JIS(セル番地)
で全角に
=ASC(セル番地)
で半角になります。

Q入力フォームで、全角カタカナ(正規表示)以外を入力し送信ボタンを押すとアラートを出すjavascriptが知りたいのですが

htmlで、フォームの項目の中にフリガナを入力してもらう際、全角カタカナ(ア~ン、ァ~ヶ、ゞ等を含む正規表示で)以外の入力を行って送信ボタンを押すと、「フリガナを全角カタカナで正しくご入力下さい」というアラートをjavascriptで出したいのですが、どう判定させたらよいものか、さっぱりわからなくて書き込みさせて頂いています。どなたかご存じの方がいらっしゃったら教えて頂けないでしょうか?
どうか、宜しくお願い致します。

Aベストアンサー

参考URLは半角カタカナですが
ひらがなも指定すればご質問のようなことが可能です。

参考URL:http://www.openspc2.org/reibun/javascript/business/001/index.html

Q全角半角変換 C++/CLI

C++/CLI(VC++2008) で
(1)たとえば 東京bay を 東京bay にという風に全角半角混在の文字列のなかの半角文字を全角文字に変換するにはどうすればよろしいでしょうか
(2)全角半角混在の文字列のなかの全角文字を半角文字に変換するにはどうすればよろしいでしょうか
 

Aベストアンサー

1. VBのStrConvを使う。

#using "Microsoft.VisualBasic.dll"
using namespace Microsoft::VisualBasic;

String^ s1 = L"東京bay";
// 全角文字へ
String^ s2 = Strings::StrConv(s1, VbStrConv::Wide, 0);
// 半角文字へ
String^ s3 = Strings::StrConv(s2, VbStrConv::Narrow, 0);


2. Win32 API LCMapStringを使う。

#include "windows.h"
#include "vcclr.h"
#pragma comment(lib, "kernel32.lib")

String^ s1 = L"東京bay";
pin_ptr<const wchar_t> p1 = PtrToStringChars(s1);

array<wchar_t>^ b2 = gcnew array<wchar_t>(s1->Length + 1);
pin_ptr<wchar_t> p2 = &b2[0];
::LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_FULLWIDTH, p1, -1, p2, b2->Length);
String^ s2 = gcnew String(p2);

array<wchar_t>^ b3 = gcnew array<wchar_t>(s1->Length + 1);
pin_ptr<wchar_t> p3 = &b3[0];
::LCMapStringW(LOCALE_USER_DEFAULT, LCMAP_HALFWIDTH, p2, -1, p3, b3->Length);
String^ s3 = gcnew String(p3);

1. VBのStrConvを使う。

#using "Microsoft.VisualBasic.dll"
using namespace Microsoft::VisualBasic;

String^ s1 = L"東京bay";
// 全角文字へ
String^ s2 = Strings::StrConv(s1, VbStrConv::Wide, 0);
// 半角文字へ
String^ s3 = Strings::StrConv(s2, VbStrConv::Narrow, 0);


2. Win32 API LCMapStringを使う。

#include "windows.h"
#include "vcclr.h"
#pragma comment(lib, "kernel32.lib")

String^ s1 = L"東京bay";
pin_ptr<const wchar_t> p1 = PtrToStringChars(s1);

a...続きを読む

Q数字以外の文字列判定方法

フォームで数字以外を入力した場合に、
エラーのアラートを出したいのですが、
その文字列の判定方法及び、アラートの
出し方がわかりません…。

ご存知の方は教えてください。
よろしくお願いします。

Aベストアンサー

こんなのでしょうか。
後は、ご自分で工夫してください。
-----

<HTML>
<HEAD>
<SCRIPT type="text/javascript">
function checkNUM() {
if(document.FORM1.INP1.value=="") {
alert("未入力です");
}
else if(document.FORM1.INP1.value.match(/[^0-9|.]/g)) {
alert("数字以外があります:" + document.FORM1.INP1.value);
}
else {
alert("正しく入力されました:" + document.FORM1.INP1.value);
}
}
</SCRIPT>
</HEAD>

<BODY>
<FORM method="POST" enctype="text/plain" NAME="FORM1">
<INPUT NAME="INP1" TYPE="TEXT">
<INPUT TYPE="BUTTON" VALUE="判定" ONCLICK="checkNUM()">
</FORM>
</BODY>
</HTML>

こんなのでしょうか。
後は、ご自分で工夫してください。
-----

<HTML>
<HEAD>
<SCRIPT type="text/javascript">
function checkNUM() {
if(document.FORM1.INP1.value=="") {
alert("未入力です");
}
else if(document.FORM1.INP1.value.match(/[^0-9|.]/g)) {
alert("数字以外があります:" + document.FORM1.INP1.value);
}
else {
alert("正しく入力されました:" + document.FORM1.INP1.value);
}
}
</SCRIPT>
</HEAD>

<BODY>
<FORM method="POST" enctype="text/plain" NAME="...続きを読む

Qワードで数字の全角を半角に(カタカナは全角のままで)変換するには?

ワードに100ページの文章があります。全角数字が散在しています。全角数字を半角に直したく、半角操作をかけるとカタカナも半角に変換されてしまいます。数字だけ変換されるようにするには、どのようにしたらいいのでしょうか。ワードの、書式メニュー→文字種の変換→半角、で操作をおこないました。

Aベストアンサー

メニューの[編集]→[検索]又は[Ctrl+F]で検索タブが開きます。

[検索する文字列]に[0-9]
(0、9、は全角。[ ]、-、は半角)

[見つかったすべての項目を強調表示する]にチェックを入れます。

[オプション]ボタンを押し[検索オプション]が開きます。
[ワイルドカードを使用する]にチェックを入れると[あいまい検索]のチェックが外れます。

[すべて検索]ボタンを押して、文書の中の全角数字の全てが選択状態になったら、
メニューの[書式]→[文字種の変換]→[半角]を選択します。

Qjavaで入力したの半角カタカナを全角に変換したい

仕事のため、javaで入力したの半角カタカナを全角に変換しなければならないですが、ご存知の方是非教えていただけないでしょうか。

Aベストアンサー

1.配列とかで半角カナと全角カナの対応表を作っておく。
  単独の表と、濁点(半濁点)付きの表とを分けて作っておく。

2.変換対象の文字列をcharAt()で1文字ずつループで回していく。

3.1文字を取り出したら、まずその次の文字を見る。

4.その次が濁点か半濁点なら、濁点の表と照らし合わせる。
  マッチするものがあればそれを拾い、ループを2文字分進める。

5.濁点の表にマッチしないか、次が濁点でない場合は
  単独の表示照らし合わせ、ループを1文字分進める。

…というやりかたでどうでしょうか?

Qキーボードでの「英数(全角/半角)」変換

 言語変換関係の質問は、「言語バー」「キーボード」関係で、多数あるのですが、どれが自分の探している症状なのか分からないので、新しく質問します。
 PCはSOTECのWV2150Cで、OSはWindowsXPで、ローマ字入力しています。
 キーボードによる、「英字和字」変換と、「英字の全角・半角」変換が、自分の意図しない変換に、どういうわけか、時々変わってしまいます。言語バーをマウスでクリックするのは面倒なので、キーボードで操作したいのですが、それが、コントロール不能になってしまうわけです。
 具体的には、まず「英字の全角」と「和字の全角」の相互変換ですが、うまくいっているときは、通常和字にしているときキーボードの「英数・CapsLock」を押すだけで「英字全角」に変換できます。また押せば、元に戻せます。しかし、何かの拍子で、このキーを押すと、「英字の半角」になってしまい、どうしても「英字の全角」になりません。しかし、時間が経って、いつのまにか、相互変換できるように戻っていることもしばしばです。
 「英字の半角」はキーボード上部の「半角/全角」キーで「英字半角」と「和字全角」とが相互変換できるので、「英数・CapsLock」キーでは、「和字全角」と「英字全角」の相互変換を維持したいわけです。というより、このキーの操作を、どちらも使えるよう、自分でコントロールしたいわけです。
 自分でコントロールするためには、「英数・CapsLock」キーを押すと、何かの拍子で、「英字全角」になったり「英字半角」になったりする、その「何かの拍子」が分かればいいと思うのですが、それが、分かりません。
 PCの種類によって、キーボード操作は違うのかもしれませんが、一つ、よろしくお願いいたします。

 言語変換関係の質問は、「言語バー」「キーボード」関係で、多数あるのですが、どれが自分の探している症状なのか分からないので、新しく質問します。
 PCはSOTECのWV2150Cで、OSはWindowsXPで、ローマ字入力しています。
 キーボードによる、「英字和字」変換と、「英字の全角・半角」変換が、自分の意図しない変換に、どういうわけか、時々変わってしまいます。言語バーをマウスでクリックするのは面倒なので、キーボードで操作したいのですが、それが、コントロール不能になっ...続きを読む

Aベストアンサー

#2です。

質問者さんの使用法なら、必要はないでしょうが、
 >このキーの操作を、どちらも使えるよう、自分でコントロールしたい
ということなので、補足しておきます。

「全角英数」/「半角英数」を基本設定の優先順位と逆のほうにしたいときは、[Caps Lock]の後、[Shift]+[無変換]で行えます。

なお、ご存じかと思いますが、「全(半)角英数」から「ひらがな」に復帰するには、[Caps Lock]のほか[無変換]でも[カタカナ ひらがな]でも可能です。

ひとつ注意が必要なのは、これもご存じかも知れませんが、次の点です。
「全(半)角英数」モードで入力作業をした後、「ひらがな」に復帰することなく、[半角/全角]によって「直接入力」モードにすると、
次に「ひらがな」に復帰しようとしても、[半角/全角]を押したのでは戻れず、「全(半)角英数」になるだけです。
この場合、その上で[Caps Lock]を押せばいいのですが、「直接入力」から[カタカナ ひらがな]を2回押す方法もあります。
とにかく、[半角/全角]を何度押しても行ったり来たりするばかりで、「ひらがな」には戻れません。

御参考までに、次のような操作法も考えられます。
1.「ひらがな」→「全(半)角英数」は[Caps Lock]
2.「ひらがな」→「直接入力」は[半角/全角]
これは当たり前ですね。

3.「全(半)角英数」→「ひらがな」は[カタカナ ひらがな]
4.「直接入力」→「ひらがな」も[カタカナ ひらがな]
 * 1回押して「全(半)角英数」になったときは、続けてもう1回押す。
 (ややこしければ、常に2連打することにしてもよい。)

つまり[半角/全角]や[Caps Lock]をON/OFに使うのではなく、それぞれ一方通行にしておいて、
「ひらがな」に復帰するときはいつも[カタカナ ひらがな]を使うという方法です。

#2です。

質問者さんの使用法なら、必要はないでしょうが、
 >このキーの操作を、どちらも使えるよう、自分でコントロールしたい
ということなので、補足しておきます。

「全角英数」/「半角英数」を基本設定の優先順位と逆のほうにしたいときは、[Caps Lock]の後、[Shift]+[無変換]で行えます。

なお、ご存じかと思いますが、「全(半)角英数」から「ひらがな」に復帰するには、[Caps Lock]のほか[無変換]でも[カタカナ ひらがな]でも可能です。

ひとつ注意が必要なのは、これもご存じかも知れ...続きを読む

Qキーボードから入力された全角文字列(変換中、確定後)の取得方法

JTextFieldの機能を自作しようとしています。
入力された半角文字は、getKeyChar()で取得できたのですが、このままgetKeyChar()を使うと、一文字の全角文字なら取得できますが、確定後の全角文字列は最後の1文字しか取得できません。

そこでいろいろ調べていると、変換中や確定後の文字列を取得するには、InputMethod関連を使うと良いようなのですが、実装の仕方がよく分かりません。
どのように記述すれば文字列を取得できるのでしょうか。

Aベストアンサー

以下は簡単すぎて実用性ゼロですが、だいたいこんな感じです(これはパッシブクライアントの例)。
詳しくは、java.awt.imパッケージの関連ドキュメンテーションをお勉強してください。サンプルプログラムも豊富に提供されていますから、勉強に行き詰まることはないと思います。
----------------------------------------------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class AAA extends JPanel implements KeyListener{
private char keyChar;
StringBuffer sb;

public AAA(){
sb = new StringBuffer();
enableInputMethods(true);
setFocusable(true);
addKeyListener(this);
setPreferredSize(new Dimension(200, 100));
}

public void keyTyped(KeyEvent e){
sb.append(keyChar = e.getKeyChar());
repaint();
}

public void paintComponent(Graphics g){
super.paintComponent(g);

if (sb != null){
g.drawString(sb.toString(), 10, 20);
}
}

public void keyPressed(KeyEvent e){}
public void keyReleased(KeyEvent e){}

/* main() for test */
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Container con = frame.getContentPane();
con.add(new AAA(), BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
}
----------------------------------------------

参考URL:http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/imf/index.html

以下は簡単すぎて実用性ゼロですが、だいたいこんな感じです(これはパッシブクライアントの例)。
詳しくは、java.awt.imパッケージの関連ドキュメンテーションをお勉強してください。サンプルプログラムも豊富に提供されていますから、勉強に行き詰まることはないと思います。
----------------------------------------------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class AAA extends JPanel implements KeyListener{
private char keyChar;
StringBuffer ...続きを読む

QALT+半角/全角を押さなければ、文字を変換できません。

PCを立ち上げ、文字を最初に入力しようとすると、英数字で入力されます。

そこで、日本語に変換しようとするのですが、ALT+半角/全角を押さなければ、文字を変換できません。


その後は、半角/全角を押すだけで、変換できるようになります。



一番初めから、半角/全角を押すだけで、変換できるようにするためにはどうすればいいですか?



PC
dell 1525
WindowsVista Home Premium
http://www.sd-dream.com/pasocompass/PC/Dell/Inspiron1525.html

Aベストアンサー

自分の場合は既定の言語を
”日本語(日本)-日本語”から
”日本語(日本)-Microsoft IME”
にしたら半角/全角だけで変換できるようになりました。

Q全角文字を半角にすると全角の”と’が変換されない理由と対策を!?

String.prototype.toAscii = function(){
return this.replace(/([!-~ ])/g,
function (char){return String.fromCharCode(char.charCodeAt(0) - 65248)} );
}
タイトル通りです。全角の「”」と「’」が半角文字に変換されません。
その理由と対策を教えていただけますか?
それと、根本的にこんなやりかたは、だめなのでしょうか?

Aベストアンサー

対策:
知らん。
#元々僕はそういう変換噛ます事に抵抗感ある人間なのでできることならやらないでほしいと思っている

原因:
http://en.wikipedia.org/wiki/Halfwidth_and_Fullwidth_Forms
"はU+FF02 FULLWIDTH QUOTATION MARK
”はU+201D RIGHT DOUBLE QUOTATION MARK


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報