代码之家  ›  专栏  ›  技术社区  ›  Adam Outler

如何将^M拆分为单独的行?

  •  0
  • Adam Outler  · 技术社区  · 15 年前

    我是java编程新手。我写了一个程序来解释我车上的数据。我在使用原始数据而不是熟数据方面遇到了问题。

        public static void readFile(String fromFile) throws IOException {
        BufferedReader reader = new BufferedReader(new FileReader(fromFile));
    
        //... Loop as long as there are input lines.
        String line = null;
    
        while ((line=reader.readLine()) != null )  {
              if (line.length() >= 2) { 
    
                   Status.LineToken = new StringTokenizer (line);     
                   Status.CheckToken = Status.LineToken.nextToken();
                   Log.level1(line);
                   if ( Status.CheckToken.contains("41")) {
                    Mode01.modeSwitch();
                   } else if (Status.CheckToken.contains("42")) {
                    Mode02.modeSwitch();
                   } else if ( Status.CheckToken.contains("43")) {
                    Mode03.modeSwitch();                     
                   } else if (Status.CheckToken.contains("44")) {                    
                    Mode04.modeSwitch();                          
                   } else if ( Status.CheckToken.contains("45")) {
                       Mode05.modeSwitch();
                   } else if ( Status.CheckToken.contains("46")) {
                    //is there a mode 6?
                   } else if ( Status.CheckToken.contains("47")) {
                    //is there a mode 7?
                   } else if ( Status.CheckToken.contains("48")) {
                    // mode 8 is for control of a vehicle.  Unknown params at this time.
                   } else if ( Status.CheckToken.contains("49")) {
                    Mode09.modeSwitch();                      
                   } else if (line.endsWith(">")) {
                     //Send data to OBD unit
                   } else if (Status.LineToken != null) {
                    //blank line catch
                   }
              }
        }
        reader.close();  // Close to unlock.
        newDataIsAvailable = true;
    }
    

    >0100
    41 00 BE 1F B8 10 
    
    >0101
    41 01 00 07 65 00 
    

    但我在转换原始代码时遇到了问题:

    ^M^M>0100^M41 00 BE 1F B8 10 ^M^M>0101^M41 01 00 07 65 00 
    

    所以基本上,问题是reader.readline集合上需要一个行分隔符,以便在^M处创建新的数据行。我真的不知道怎么做。

    3 回复  |  直到 15 年前
        1
  •  1
  •   trashgod    15 年前

    readLine() read() 相反。

        2
  •  1
  •   tlayton    15 年前

        3
  •  0
  •   Ignacio Vazquez-Abrams    15 年前
    line.replace("\r", "\n")