Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中拆分或解析字符串_Java_Arrays - Fatal编程技术网

在java中拆分或解析字符串

在java中拆分或解析字符串,java,arrays,Java,Arrays,我有一个文件sample.txt,它的内容将是 12345#ABCDEF#12345#ADCDE 12345#ABCDEF#12345#ADCDE FHJI KLMN OPQ 12345#ABCDEF#12345#ADCDE 现在我想基于# 我的输出应该是 Test1 : 12345 Test2 : ABCDEF Test3 : 12345 Test4 : ADCDE Test1 : 12345 Test2 : ABCDEF Test3 : 12345 Test4 :

我有一个文件sample.txt,它的内容将是

12345#ABCDEF#12345#ADCDE

12345#ABCDEF#12345#ADCDE

FHJI

KLMN

OPQ

12345#ABCDEF#12345#ADCDE
现在我想基于#

我的输出应该是

Test1 : 12345

Test2 : ABCDEF

Test3 : 12345

Test4 : ADCDE

Test1 : 12345

Test2 : ABCDEF

Test3 : 12345

Test4 : ADCDE

        FHJI

        KLMN

        OPQ

Test1 : 12345

Test2 : ABCDEF

Test3 : 12345

Test4 : ADCDE
我像下面这样写

String sCurrentLine;
String Test1, Test2, Test3, Test4 = "";

br = new BufferedReader(new FileReader("D:\\sample.txt"));

while ((sCurrentLine = br.readLine()) != null) {
    String line[] = sCurrentLine.split("#");
    Test1 = line[0];
    Test2 = line[1];
    Test3 = line[2]
    Test4 = line[3];
    System.out.println(Test1+"\n"+Test2+"\n"+Test3+"\n"+Test4);
    }
12345#ABCDEF#12345#ADCDE

12345#ABCDEF#12345#ADCDE
如果只有一条线,它就可以工作了 或sample.txt,如下所示

String sCurrentLine;
String Test1, Test2, Test3, Test4 = "";

br = new BufferedReader(new FileReader("D:\\sample.txt"));

while ((sCurrentLine = br.readLine()) != null) {
    String line[] = sCurrentLine.split("#");
    Test1 = line[0];
    Test2 = line[1];
    Test3 = line[2]
    Test4 = line[3];
    System.out.println(Test1+"\n"+Test2+"\n"+Test3+"\n"+Test4);
    }
12345#ABCDEF#12345#ADCDE

12345#ABCDEF#12345#ADCDE
它不适用于顶级声明的示例

请帮帮我


谢谢。

执行类似操作,检查字符串中是否有足够的段

String sCurrentLine;
String Test1, Test2, Test3, Test4 = "";

br = new BufferedReader(new FileReader("D:\\sample.txt"));

while ((sCurrentLine = br.readLine()) != null) {

  String line[] = sCurrentLine.split("#");
  if(line.length >= 4){
    Test1 = line[0];
    Test2 = line[1];
    Test3 = line[2]
    Test4 = line[3];
  }
    System.out.println(Test1+"\n"+Test2+"\n"+Test3+"\n"+Test4);
}

执行类似的操作,检查字符串中是否有足够的段

String sCurrentLine;
String Test1, Test2, Test3, Test4 = "";

br = new BufferedReader(new FileReader("D:\\sample.txt"));

while ((sCurrentLine = br.readLine()) != null) {

  String line[] = sCurrentLine.split("#");
  if(line.length >= 4){
    Test1 = line[0];
    Test2 = line[1];
    Test3 = line[2]
    Test4 = line[3];
  }
    System.out.println(Test1+"\n"+Test2+"\n"+Test3+"\n"+Test4);
}
这条线

String line[] = sCurrentLine.split("#");
将字符串拆分为
n
片段,如果您分析的行中没有
#
将崩溃。要解决此问题,您有两个选项:

  • 修复文件
  • 分配前请检查数组的长度,以避免

    • 这条线

      String line[] = sCurrentLine.split("#");
      
      将字符串拆分为
      n
      片段,如果您分析的行中没有
      #
      将崩溃。要解决此问题,您有两个选项:

      • 修复文件
      • 分配前请检查数组的长度,以避免


      您必须检查是否可以将字符串拆分为所需的部分

      String sCurrentLine;
      String Test1 = "";
      String Test2= "";
      String Test3= "";
      String Test4 = "";
      
      br = new BufferedReader(new FileReader("D:\\sample.txt"));
      
      while ((sCurrentLine = br.readLine()) != null) {
          String line[] = sCurrentLine.split("#");
          if (line.length >= 4) {
              Test1 = line[0];
              Test2 = line[1];
              Test3 = line[2]
              Test4 = line[3];
          } else {
               Test4 = line[0] + "\n";
          }
          System.out.println(Test1+"\n"+Test2+"\n"+Test3+"\n"+Test4);
      }
      

      您必须检查是否可以将字符串拆分为所需的部分

      String sCurrentLine;
      String Test1 = "";
      String Test2= "";
      String Test3= "";
      String Test4 = "";
      
      br = new BufferedReader(new FileReader("D:\\sample.txt"));
      
      while ((sCurrentLine = br.readLine()) != null) {
          String line[] = sCurrentLine.split("#");
          if (line.length >= 4) {
              Test1 = line[0];
              Test2 = line[1];
              Test3 = line[2]
              Test4 = line[3];
          } else {
               Test4 = line[0] + "\n";
          }
          System.out.println(Test1+"\n"+Test2+"\n"+Test3+"\n"+Test4);
      }
      

      请正确地编排你的问题。如果文本文件内容被格式化为代码,这会有所帮助。提示:A)“不工作”是不够的。到底哪里出了问题?!不要指望我们将您的代码和数据一起编译/运行,只是为了重新处理您的问题B)如果没有适当的长度检查,请不要拆分和访问数组元素。请正确设置问题的格式。如果文本文件内容被格式化为代码,这会有所帮助。提示:A)“不工作”是不够的。到底哪里出了问题?!不要指望我们将您的代码和数据一起编译/运行,只是为了重新处理您的问题B)在没有适当长度检查的情况下,永远不要进行拆分和访问数组元素。是否可以将Test4=行[3]存储在if条件中,而将行[0]存储在同一字符串变量中,并用“\n”分隔?您的意思是
      Test4=行[0]+“\n”
      ?字符串sCurrentLine;字符串Test1、Test2、Test3、Test4=“”;br=新的BufferedReader(新的文件读取器(“D:\\sample.txt”);while((sCurrentLine=br.readLine())!=null){String line[]=sCurrentLine.split(“#”);if(line.length>=4){Test1=line[0];Test2=line[1];Test3=line[2]Test4=line[3];}else{Test4=line[0];}System.out.println(Test1+“\n”+Test2+“\n”+Test3+“\n”+Test4)}如果我像下面这样打印,我需要像下面一样测试1:12345测试2:ABCD测试3:12345测试4:ADCD FHJI KLMNOPQ@Hello将else中的代码更改为
      Test4=行[0]+“\n”我想它会工作的。如果我打印所有的test1,…,test4之后,我需要获取所有的值扫描,那么可以将test4=行[3]存储在If条件中,将行[0]存储在同一个字符串变量中,并用“\n”分隔?您的意思是
      test4=行[0]+“\n”
      ?字符串sCurrentLine;字符串Test1、Test2、Test3、Test4=“”;br=新的BufferedReader(新的文件读取器(“D:\\sample.txt”);while((sCurrentLine=br.readLine())!=null){String line[]=sCurrentLine.split(“#”);if(line.length>=4){Test1=line[0];Test2=line[1];Test3=line[2]Test4=line[3];}else{Test4=line[0];}System.out.println(Test1+“\n”+Test2+“\n”+Test3+“\n”+Test4)}如果我像下面这样打印,我需要像下面一样测试1:12345测试2:ABCD测试3:12345测试4:ADCD FHJI KLMNOPQ@Hello将else中的代码更改为
      Test4=行[0]+“\n”我认为它会工作。如果我打印所有的test1,…,test4,否则我需要得到所有的值