【问题标题】:How to remove trailing character(s) from a string如何从字符串中删除尾随字符
【发布时间】:2012-07-06 06:16:23
【问题描述】:

我有一个包含数据结构的文件。数据以字节形式存储。我想在屏幕上显示一个数据(人名)。名称的大小约为 12 个字符。但数据可能少于或等于 12 个字符。我将字节数组转换为字符串并显示数据。当尝试使用 system.out.println 方法显示数据时,它会显示数据和不需要的字符。如何只显示想要的数据。

我试过下面的代码

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

我收到的输出是

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

我只想要'area1'。请提供解决方案

【问题讨论】:

  • 感谢 samir 编辑问题
  • title = new String(Name).trim();

标签: java android string


【解决方案1】:
System.out.println("Title = area1����������".replaceAll("([^A-Za-z0-9 ])", ""));

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

【讨论】:

  • 有点疑问,我不想压制'-','_','.','/'有可能吗?
  • @harekrishna - 自然地:您在正则表达式中的 ' '(空白)和 ']' 之前连接这些符号:"([^A-Za-z0-9 -_ ./])"
【解决方案2】:
    String title = new String( Name ,"UTF-8" );
    System.out.println("Title = " + title);

【讨论】:

    【解决方案3】:

    你试过了吗?

    String decoded = new String(Name, "UTF-8"); 
    

    【讨论】:

    • 也可以试试,UTF-16LE或者UTF-16BE
    【解决方案4】:

    来自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 类来做到这一点:

    Character.isLetter(character);
    

    但如果您需要检查多个字母,那就不太方便了。

    【讨论】:

      【解决方案5】:

      在这里找到更新的代码:

              // 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);
      

      【讨论】:

        【解决方案6】:

        使用StringBuilder 类,通过附加从输入文件流中读取的每个字符来构建字符串,直到到达文件末尾。一旦到达文件末尾,立即通过StringBuilder 类的toString() 方法返回字符串。

        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();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-06-05
          • 2015-04-03
          • 2011-08-12
          • 1970-01-01
          • 2019-01-10
          • 1970-01-01
          • 2010-11-05
          相关资源
          最近更新 更多