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是要拆分的文件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
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