java 中怎么截取出上面字符串中的A的后面D的前面 String ="A123456789D A2345D A333445D A2323D........"( 后面还有多少个不知道。但是都是A 开头D 结尾的)java 中怎么截取出上面字符串中的A的后面D的前面,而且A和D中间的字符长度是不规律的?????大家谁懂得? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 正则表达式具体参考API, 我正则表达式菜菜... Matcher m=Pattern.compile("A.*?D").matcher(s);while(m.find()){ System.out.println(m.group());} Matcher m=Pattern.compile("A(.*?)D").matcher(s);while(m.find()){ System.out.println(m.group()); System.out.println(m.group(1));} import java.util.regex.Matcher;import java.util.regex.Pattern;/** * * @author zhappy */public class test { /** Creates a new instance of test */ public test() { } public static void main(String args[]) { String tmp = "A123456789D A2345D A333445D A2323D "; String temp[] = tmp.split("\\s"); String reg = "\\d{1,}"; for (int i=0;i<temp.length;i++) { Pattern p = Pattern.compile(reg); Matcher m = p.matcher(temp[i]); if (m.find()) { System.out.println(m.group()); } } } } dreamover(梦醒了〖http://hellfire.cn〗) 老大的比我的好,学习! 利用StringTokenizer,以下程序刚刚通过import java.util.*;public class StrToken{public static void main(String args[]){ String str="A123456789D A2345D A333445D A2323D"; //通过StringTokenizer构造出Vector String currStr=""; Vector vt=new Vector(); StringTokenizer st=new StringTokenizer(str); while(st.hasMoreTokens()){ currStr=new String(st.nextToken()); vt.addElement(currStr);}//打印print(vt);}public static void print(Vector v){ String strEle=""; for(int i=0;i<v.size();i++){ strEle=(String)v.elementAt(i); if(strEle.length()>2) System.out.println(strEle.substring(1,strEle.length()-1)); }}}编译后输入12345678923453334452323 import java.util.regex.Matcher;import java.util.regex.Pattern;/** * * @author zhappy */public class test { /** Creates a new instance of test */ public test() { } public static void main(String args[]) { String s = "A123456789D A2345D A333445D A2323D "; Matcher m = Pattern.compile("A(\\d*?)D").matcher(s); while(m.find()){ //System.out.println(m.group()); System.out.println(m.group(1)); } } }init:deps-jar:Compiling 1 source file to D:\java\nbapp\db2test\build\classescompile:run:12345678923453334452323生成成功(总时间:0 秒)利用正则表达式简单多了,也是编译通过的 但是。如果字符串是两位开头。三位结尾的呢例如String ="AB123456789CDE AB2345CDE AB333445CDE AB2323CDE........"( 后面还有多少个不知道。但是都是AB 开头CDE 结尾的) import java.util.*;public class StrToken{public static void main(String args[]){ String str="A123456789D A2345D A333445D A2323D"; //通过StringTokenizer构造出Vector String currStr=""; Vector vt=new Vector(); StringTokenizer st=new StringTokenizer(str); while(st.hasMoreTokens()){ currStr=new String(st.nextToken()); vt.addElement(currStr);}//打印print(vt);}public static void print(Vector v){ String strEle=""; for(int i=0;i<v.size();i++){ strEle=(String)v.elementAt(i); if(strEle.length()>5) System.out.println(strEle.substring(2,strEle.length()-3)); }}} 但是。如果字符串是两位开头。三位结尾的呢例如String ="AB123456789CDE AB2345CDE AB333445CDE AB2323CDE........"( 后面还有多少个不知道。但是都是AB 开头CDE 结尾的) import java.util.regex.Matcher;import java.util.regex.Pattern;/** * * @author zhappy */public class test { /** Creates a new instance of test */ public test() { } public static void main(String args[]) { String s = "AB123456789CDE AB2345CDE AB333445CDE AB2323CDE"; //后面还有多少个不知道。但是都是AB 开头CDE 结尾的 Matcher m = Pattern.compile("AB(\\d*?)CDE").matcher(s); while(m.find()){ //System.out.println(m.group()); System.out.println(m.group(1)); } } } //测试public static void main(String[] args){ String str ="A123456789D A2345D A333445D"; String[] s = str.split(" "); for(int i = 0; i < s.length; i++){ System.out.println(s[i].substring(1,s[i].length() - 1)); } } 但是。如果字符串是两位开头。三位结尾的呢例如String ="AB123456789CDE AB2345CDE AB333445CDE AB2323CDE........"( 后面还有多少个不知道。但是都是AB 开头CDE 结尾的)====================================那就用正则表达式吧! 关于流关闭的一个问题 类中定义了一个枚举,这是什么用法?匪夷所思 求助,没理解这个题目,请哪位大侠帮忙分析下题目和答案 初学者求jdbc代码优化,谢谢! 关于 io 的两个小例子,达人帮忙看看啊~谢谢 在线等,#####一个简单的问题 求助??在Choice中判断年份的问题?? 如何手动触发事件,即用代码调用事件,请给出间单例子 公历和阴历如何转换??????????? 疾风摩郎 进来拿分啊 关于nio包中Datagramchannel实现非阻塞的问题 100求JDK1.4打印JTABLE着么实现?
System.out.println(m.group());
}
System.out.println(m.group());
System.out.println(m.group(1));
}
import java.util.regex.Pattern;/**
*
* @author zhappy
*/
public class test {
/** Creates a new instance of test */
public test() {
}
public static void main(String args[]) {
String tmp = "A123456789D A2345D A333445D A2323D ";
String temp[] = tmp.split("\\s");
String reg = "\\d{1,}";
for (int i=0;i<temp.length;i++) {
Pattern p = Pattern.compile(reg);
Matcher m = p.matcher(temp[i]);
if (m.find()) {
System.out.println(m.group());
}
}
}
}
public class StrToken{
public static void main(String args[]){
String str="A123456789D A2345D A333445D A2323D"; //通过StringTokenizer构造出Vector
String currStr="";
Vector vt=new Vector();
StringTokenizer st=new StringTokenizer(str);
while(st.hasMoreTokens()){
currStr=new String(st.nextToken());
vt.addElement(currStr);
}
//打印
print(vt);
}public static void print(Vector v){
String strEle="";
for(int i=0;i<v.size();i++){
strEle=(String)v.elementAt(i);
if(strEle.length()>2)
System.out.println(strEle.substring(1,strEle.length()-1));
}}
}编译后输入
123456789
2345
333445
2323
import java.util.regex.Pattern;/**
*
* @author zhappy
*/
public class test {
/** Creates a new instance of test */
public test() {
}
public static void main(String args[]) {
String s = "A123456789D A2345D A333445D A2323D ";
Matcher m = Pattern.compile("A(\\d*?)D").matcher(s);
while(m.find()){
//System.out.println(m.group());
System.out.println(m.group(1));
}
}
}init:
deps-jar:
Compiling 1 source file to D:\java\nbapp\db2test\build\classes
compile:
run:
123456789
2345
333445
2323
生成成功(总时间:0 秒)利用正则表达式简单多了,也是编译通过的
例如
String ="AB123456789CDE AB2345CDE AB333445CDE AB2323CDE........"( 后面还有多少个不知道。但是都是AB 开头CDE 结尾的)
public class StrToken{
public static void main(String args[]){
String str="A123456789D A2345D A333445D A2323D"; //通过StringTokenizer构造出Vector
String currStr="";
Vector vt=new Vector();
StringTokenizer st=new StringTokenizer(str);
while(st.hasMoreTokens()){
currStr=new String(st.nextToken());
vt.addElement(currStr);
}
//打印
print(vt);
}public static void print(Vector v){
String strEle="";
for(int i=0;i<v.size();i++){
strEle=(String)v.elementAt(i);
if(strEle.length()>5)
System.out.println(strEle.substring(2,strEle.length()-3));
}}
}
例如
String ="AB123456789CDE AB2345CDE AB333445CDE AB2323CDE........"( 后面还有多少个不知道。但是都是AB 开头CDE 结尾的)
import java.util.regex.Pattern;/**
*
* @author zhappy
*/
public class test {
/** Creates a new instance of test */
public test() {
}
public static void main(String args[]) {
String s = "AB123456789CDE AB2345CDE AB333445CDE AB2323CDE";
//后面还有多少个不知道。但是都是AB 开头CDE 结尾的
Matcher m = Pattern.compile("AB(\\d*?)CDE").matcher(s);
while(m.find()){
//System.out.println(m.group());
System.out.println(m.group(1));
}
}
}
public static void main(String[] args){
String str ="A123456789D A2345D A333445D";
String[] s = str.split(" ");
for(int i = 0; i < s.length; i++){
System.out.println(s[i].substring(1,s[i].length() - 1));
}
}
例如
String ="AB123456789CDE AB2345CDE AB333445CDE AB2323CDE........"( 后面还有多少个不知道。但是都是AB 开头CDE 结尾的)====================================
那就用正则表达式吧!