我有一个txt格式的文档,假如是这样的:
————————————————————————————————————————
NULL, /* link_id = 5 */ \
NULL, /* link_id = 6 */ \
char*suit_case_am_num_01(void);
NULL, /* link_id = 12 */ \
NULL, /* link_id = 13 */ \
NULL, /* link_id = 14 */ \
NULL /* link_id = 15 */ \
char*suit_case_am_num_02(void);
char*suit_case_am_num_03(void);
NULL, /* link_id = 12 */ \
NULL, /* link_id = 13 */ \
NULL, /* link_id = 14 */ \
NULL /* link_id = 15 */ \
char*suit_case_am_num_04(void);
char*suit_case_am_num_05(void);
————————————————————————————————————————
我想将所有以char*开头,(void)结尾的中间那一段字符串截取出来:
最终希望得到的是这样的一串:
suit_case_am_num_01
suit_case_am_num_02
suit_case_am_num_03
suit_case_am_num_04
suit_case_am_num_05
改怎么写这段代码?
————————————————————————————————————————
NULL, /* link_id = 5 */ \
NULL, /* link_id = 6 */ \
char*suit_case_am_num_01(void);
NULL, /* link_id = 12 */ \
NULL, /* link_id = 13 */ \
NULL, /* link_id = 14 */ \
NULL /* link_id = 15 */ \
char*suit_case_am_num_02(void);
char*suit_case_am_num_03(void);
NULL, /* link_id = 12 */ \
NULL, /* link_id = 13 */ \
NULL, /* link_id = 14 */ \
NULL /* link_id = 15 */ \
char*suit_case_am_num_04(void);
char*suit_case_am_num_05(void);
————————————————————————————————————————
我想将所有以char*开头,(void)结尾的中间那一段字符串截取出来:
最终希望得到的是这样的一串:
suit_case_am_num_01
suit_case_am_num_02
suit_case_am_num_03
suit_case_am_num_04
suit_case_am_num_05
改怎么写这段代码?
解决方案 »
- 奇怪的问:一个java文件最多可以拥有多少个类,面试题;
- eclipse 的workspace 文件夹下面有个 叫“.metadata”的文件夹,那是做什么用的?
- 求助!载入Java小应用程序失败.
- 遇到socket一个奇怪的问题,急死了~!~大家帮忙看看
- 有没有 JAVA 类的电子版浏览器?
- 文件的过滤问题???
- 关于socket的问题,求助!!!
- 疑问:eclipse下载来后应该放在什么地方?我的为什么打不开呢?
- 谁告诉我:java的学习路线?都有哪些?
- 关于URL类的问题
- 前些天比较了Vector和ArrayList的区别,今天找到了更详细的叫:分析Vector、ArrayList、Hashtable、HashMap数据结分享一下
- 字符串分割的问题
判断如果开头为"char*",那么就substring()固定位置,因为char*和(void)都是固定长度。
那么中间的就是你需要的了。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.*;public class FindStringWithChar
{
public static void main(String[] args)
{
try
{
BufferedReader bf=new BufferedReader(new FileReader("3.txt"));
String str=null;
while((str=bf.readLine())!=null)
{
Pattern pattern = Pattern.compile("^char.*"); //找到char开头的字符串。
Matcher matcher = pattern.matcher(str);
while (matcher.find())
{
String s=matcher.group().replaceAll("char\\*","").replaceAll("\\(void\\);",""); //替换掉头"char*"和尾"(void);.
System.out.println(s);
}
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public static void main(String args[]){
Pattern pattern = Pattern.compile("(?s)char\\*(.*?)\\(void\\)");
String str="char*suit_case_am_num_02(void)";
Matcher matcher = pattern.matcher(str);
while (matcher.find()){
System.out.println(matcher.group(1));
}
}
String path = "文件存放目录";
BufferedReader bf=new BufferedReader(new FileReader(new File(path)));
String str=null;
while((str=bf.readLine())!=null){
if(str.startsWith("char*") && str.endsWith("(void)")){
System.out.println(str.substring(5, 24));
}
}
}