我有一个包含数据结构的文件。数据存储为字节。我想在屏幕上显示一个数据(人名)。名称大小约为12个字符。但数据可能小于或等于12个字符。我将字节数组转换为字符串并显示数据。当尝试使用system.out.println方法显示数据时,它会显示数据和不需要的字符。如何只显示想要的数据。
我试过下面的代码
// here Name is a byte array
title = new String( Name );
System.out.println("Title = " + title);
我收到的输出是
Title = area1����������
我只想要'area1'。请提供解决方案
答案 0 :(得分:2)
String title = new String( Name ,"UTF-8" );
System.out.println("Title = " + title);
答案 1 :(得分:2)
System.out.println("Title = area1����������".replaceAll("([^A-Za-z0-9 ])", ""));
给:Title area1
,您也可以添加.replaceAll("\ \ "," "));
或根据需要调整正则表达式
答案 2 :(得分:1)
你试过吗?
String decoded = new String(Name, "UTF-8");
答案 3 :(得分:0)
来自How to determine whether a character is a letter in Java?
string.matches("\\p{L}"); // Unicode letter
string.matches("\\p{Lu}"); // Unicode upper-case letter
您也可以使用Character class:
执行此操作Character.isLetter(character);
但如果您需要检查多个字母,则不太方便。
答案 4 :(得分: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();
答案 5 :(得分: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);