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
    String title = new String( Name ,"UTF-8" );
    System.out.println("Title = " + title);
于 2012-07-06T06:21:54.607 回答
2
System.out.println("Title = area1����������".replaceAll("([^A-Za-z0-9 ])", ""));

give : Title area1,您也可以根据需要添加.replaceAll("\ \ "," "));或调整正则表达式

于 2012-07-06T07:47:02.173 回答
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 回答