Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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中的Regex派生文件行的前几个字符并将其用作文件名_Java_Regex - Fatal编程技术网

java中的Regex派生文件行的前几个字符并将其用作文件名

java中的Regex派生文件行的前几个字符并将其用作文件名,java,regex,Java,Regex,我需要将一个文件拆分为多个文件。 该文件的类型为: 表1“a、b、c、d、e、f” 2 W表1“a、b、c、d、e、f” 3D表1“a、b、c、D、e、f” 我想将此文件拆分为3个文件,命名约定如下 表1、表2和表3 我已经将ted文件分为3个文件,但名称很简单。 我想把他们的名字如上所述。 谁能帮我命名这些文件:) 代码如下: 注意:text.txt是要拆分的文件 import java.io.BufferedReader; import java.io.File; import java.i

我需要将一个文件拆分为多个文件。 该文件的类型为: 表1“a、b、c、d、e、f” 2 W表1“a、b、c、d、e、f” 3D表1“a、b、c、D、e、f” 我想将此文件拆分为3个文件,命名约定如下 表1、表2和表3 我已经将ted文件分为3个文件,但名称很简单。 我想把他们的名字如上所述。 谁能帮我命名这些文件:) 代码如下:

注意:text.txt是要拆分的文件

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import java.lang.Object ;
import java.util.regex.Matcher ;
import java.util.regex.Pattern;


public class Test {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        String inputFile="C:\\path\\test.txt"; 
         BufferedReader br = new BufferedReader(new FileReader(new File(inputFile)));
         String line=null;
         StringBuilder sb = new StringBuilder();
         int count=1;
        try {
            while((line = br.readLine()) != null){
                Matcher match = Pattern.compile("^[0-9]+ [TWD]").matcher(line);
                while (match.find())
                {
                sb.append("split"+"\r\n ");

                }

                if(sb.length()!=0){
                sb.append(line+"\r\n ");

                }

            }

            int c = 0;
            Pattern p = Pattern.compile("split");
            Matcher m = p.matcher( sb.toString() );
            while (m.find()) {
                                c++;
                            }
            //System.out.println(c); 
            int index = 0;
            for(int i=0;i<=c  ;i++)
            {

               if(sb.length() > 0 && sb.toString().contains("split")){          
                File file = new File("C:\\path\\DOC_ID_"+i+".txt");
                PrintWriter writer = new PrintWriter(file, "UTF-8");
                index = sb.toString().indexOf("split",2);
                //System.out.println(index);
                if(index>0)
                {
                writer.println(sb.toString().substring(7,index));
                sb.delete(0, index);
                }
                else
                {
                writer.println(sb.toString().substring(7,sb.length()));
                sb.delete(0, sb.length());
                }
                writer.close();


            }
            }

           } catch (Exception ex) {
             ex.printStackTrace();
           }
           finally {
                  br.close();
                }
    }

}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileReader;
导入java.io.IOException;
导入java.io.PrintWriter;
导入java.lang.Object;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公开课考试{
/**
*@param args
*@抛出异常
*/
公共静态void main(字符串[]args)引发IOException{
//TODO自动生成的方法存根
String inputFile=“C:\\path\\test.txt”;
BufferedReader br=新的BufferedReader(新文件读取器(新文件(inputFile)));
字符串行=null;
StringBuilder sb=新的StringBuilder();
整数计数=1;
试一试{
而((line=br.readLine())!=null){
Matcher match=Pattern.compile(“^[0-9]+[TWD]”)。Matcher(行);
while(match.find())
{
sb.追加(“拆分”+“\r\n”);
}
如果(sb.length()!=0){
sb.追加(第+行“\r\n”);
}
}
int c=0;
模式p=模式编译(“拆分”);
Matcher m=p.Matcher(sb.toString());
while(m.find()){
C++;
}
//系统输出打印ln(c);
int指数=0;
对于(int i=0;i 0&&sb.toString()包含(“拆分”){
File File=新文件(“C:\\path\\DOC\u ID\uu”+i+”.txt);
PrintWriter=新的PrintWriter(文件“UTF-8”);
index=sb.toString().indexOf(“拆分”,2);
//系统输出打印项次(索引);
如果(索引>0)
{
writer.println(sb.toString().substring(7,index));
sb.删除(0,索引);
}
其他的
{
writer.println(sb.toString().substring(7,sb.length());
sb.删除(0,sb.length());
}
writer.close();
}
}
}捕获(例外情况除外){
例如printStackTrace();
}
最后{
br.close();
}
}
}

在我理解之前,您需要这个正则表达式

(\d+)\s+([TWD])\s+([\w-]+).*

Java代码


在我理解之前,您需要这个正则表达式

(\d+)\s+([TWD])\s+([\w-]+).*

Java代码


谢谢皮尤斯的编辑。我不明白你的意思,但是你想要什么?这正是我想要的。谢谢你添加了代码。根据你的需要修改它。然后回答谢谢。这正是我需要的。太棒了…再多出一期,如果我的行首是1t table1abc“a,b,c,d,e,f”我需要文件名为“1u T_table1-abc”你提供的正则表达式正在获取1u T_table1thanks Piyush进行编辑。我不明白你的意思,但是你想要这样的东西吗?那正是我想要的。谢谢你添加了代码。根据你的需要修改它。然后做回答。谢谢。这正是我需要的。非常精彩…再多出一期,如果我的行以1t table1abc“a,b,c,d,e,f”开头,我需要文件名为“1_T_table1-abc”。您提供的正则表达式正在获取1_T_table1