我想从一个文本文件中删去一些不要的乱码,如下所示:
DC???A(??:1156:BA79A43420289C37B70E0C2E1672CB5B:33FB9583FEB5D957B8A2F43DC04112BB:::
GRATHAL???A,SECNET:1160:3CF9560255BEF4314A3B108F3FA6CB6D:CC31760B5C7E1513E814C0DF790E7DFB:::
GI????I(??????A.:1162:3055371245A85F0CAAD3B435B51404EE:65B82BADC88D5F847969E7654CAB4709:::三个冒号:::作为每一段的分隔符。在每段中,我要删去的是从每段出现的第一个?到每段出现的第一个:之间的东西。(不要?,要:) 删去乱码后每段应该都是下面所示:DC:1156:BA79A43420289C37B70E0C2E1672CB5B:33FB9583FEB5D957B8A2F43DC04112BB:::
GRATHAL:1160:3CF9560255BEF4314A3B108F3FA6CB6D:CC31760B5C7E1513E814C0DF790E7DFB:::
GI:1162:3055371245A85F0CAAD3B435B51404EE:65B82BADC88D5F847969E7654CAB4709:::希望哪位大哥可以给我提供一个解决的方法

解决方案 »

  1.   

    用split(":::")把他们分组,然后对于每个组,求出出现的第一个?到每段出现的第一个:的位置,然后删除这其中包含的字符,之后再重新打印·
      

  2.   

    GRATHAL???A,SECNET:1160:3CF9560255BEF4314A3B108F3FA6CB6D:CC31760B5C7E1513E814C0DF790E7DFB::: A,SECNET 这个也是乱码么?
      

  3.   

    一楼的方法不错。学习了。
    如果是文件用string的split方法效率是不是稍微低了点呀。有没有高效一点的方法。
    楼主:是不是每一行?与?之间的数据都算是乱码呀。。
    如果这样的话。可以一行一行读取文件中数据。import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStreamReader;
    public class StringTest {
    public static void main(String[] args) throws Exception {
    FileInputStream file=new FileInputStream("aaa");
    BufferedReader br=new BufferedReader(new InputStreamReader(file));
    String temp="";
    while(true){

    temp=br.readLine();
    if(temp==null)
    break;
    int first=temp.indexOf('?');
    int second=temp.indexOf(':', first);
    System.out.println(first+":"+second);
    String str=temp.substring(first, second);
    System.out.println(temp.substring(0,first)+temp.substring(second));
    }
    }
    }
      

  4.   

     这个问题已经解决,其实用word的替换就可以解决。
    结账!