我是java新手 求助一些java的典型读取文件的问题
首先我有2个文件
第一个每一行是这样的AOI21 g799(.A (encoder_in[10]), .B (n_44), .C (n_56), .Q (n_62));
要把AOI21 encoder_in[0] n_44 n_56还有n62 读取出来存放到string里 什么办法是比较快速的
另外一种这样的
OA311 5 1 3 0
要把AO311放string 数字放分别int里
不胜感激
------解决方案--------------------
第一个文件的参数个数是变长的,处理起来稍麻烦点,供参考:
- Java code
public static void main(String[] args) { String[] lines = { "NOR3 g836(.A (n_18), .B (n_42), .C (n_22), .Q (n_29));", "BUF g837(.A (n_25), .Q (n_21));", "NAND3 g838(.A (n_17), .B (n_20), .C (n_19), .Q (n_25));", "BUF g840(.A (n_17), .Q (n_18));", "NAND2 g843(.A (n_15), .B (n_11), .Q (n_23));", "NOR3 g841(.A (n_14), .B (encoder_in[13]), .C (encoder_in[5]), .Q (n_17));", "BUF g844(.A (n_22), .Q (n_15));", "NAND2 g847(.A (n_13), .B (n_1), .Q (n_14));", "NAND2 g845(.A (n_12), .B (n_8), .Q (n_22));", "NAND2 g846(.A (n_11), .B (n_6), .Q (n_42));", "BUF g848(.A (n_13), .Q (n_10));" }; Pattern pat = Pattern.compile("\\.\\w\\s*\\(([^\\)]*)"); for (String str : lines) { ArrayList<String> lst = new ArrayList<String>(); int pos = str.indexOf(32); String name = str.substring(0, pos); // 取开头的名字 lst.add(name); Matcher m = pat.matcher(str); // 借助正则表达式循环定位:括号中的参数 while (m.find()) { lst.add(m.group(1)); } System.out.println(lst); String[] results = lst.toArray(new String[0]); // 转成你需要的字符串数组 } }