2

データ構造を含むファイルがあります。データはバイト単位で格納されます。画面にデータ(人名)を表示したい。名前のサイズは約 12 文字です。ただし、データは 12 文字以下の場合があります。バイト配列を文字列に変換してデータを表示しました。system.out.println メソッドを使用してデータを表示しようとすると、データと不要な文字が表示されます。必要なデータのみを表示する方法。

私は以下のコードで試しました

// here Name is a byte array
title = new String( Name );
System.out.println("Title = " + title);

私が受け取った出力は

    Title = area1����������

「area1」だけが欲しい。それを解決するための解決策を提供してください

4

6 に答える 6

2
System.out.println("Title = area1����������".replaceAll("([^A-Za-z0-9 ])", ""));

与える: 、必要に応じて正規表現をTitle area1追加または調整することもできます.replaceAll("\ \ "," "));

于 2012-07-06T07:47:02.173 に答える
2
    String title = new String( Name ,"UTF-8" );
    System.out.println("Title = " + title);
于 2012-07-06T06:21:54.607 に答える
1

やってみました?

String decoded = new String(Name, "UTF-8"); 
于 2012-07-06T06:18:31.413 に答える
0

Javaで文字が文字であるかどうかを判断する方法は

string.matches("\\p{L}"); // Unicode letter
string.matches("\\p{Lu}"); // Unicode upper-case letter

これは、Characterクラスでも実行できます。

Character.isLetter(character);

ただし、複数の文字をチェックする必要がある場合は、あまり便利ではありません。

于 2012-07-06T06:24:06.330 に答える
0

クラスを使用して、StringBuilderファイルの終わりに達するまで、入力ファイルストリームから読み取られた各文字を追加して文字列を作成します。ファイルの終わりに達したら、すぐにクラスのtoString()メソッドを介して文字列を返します。StringBuilder

StringBuilder sb = new StringBuilder();
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");//
int c = 0;
while ((c = isr.read()) != -1) {
    sb.append((char) c);
}
String fixedString = sb.toString();
于 2012-07-06T06:25:23.587 に答える
0

ここで更新されたコードを見つけます:

        // here Name is a byte array
    String title = new String( "area1����������");
    System.out.println("Title = " + title);

    StringBuilder sb = new StringBuilder(title);
    StringBuilder sb2 = new StringBuilder();
    for(int i=0;i<sb.length();i++)
    {
        if(Character.isLetterOrDigit(sb.charAt(i)))
        {
            sb2.append(sb.charAt(i));
        }
    }

    title = sb2.toString();
    System.out.println("Title = " + title);
于 2012-07-06T07:24:45.963 に答える