我想用正则表示,得到市和区中间的字即得到:黄埔,该怎么做,*代表其他字
6 个解决方案
#1
楼主不用正则也行吧。
str.substring(str.indexOf("市")+1,str.lastIndexOf("区"))
你把可能的情况都说一下。
str.substring(str.indexOf("市")+1,str.lastIndexOf("区"))
你把可能的情况都说一下。
#2
楼上正解
#3
String result = "";
Pattern p = Pattern.compile("\w*市(\w*)区\w*");
Matcher m = p.matcher(str);
if (m.find()) {
result = m.group(1);
}
Pattern p = Pattern.compile("\w*市(\w*)区\w*");
Matcher m = p.matcher(str);
if (m.find()) {
result = m.group(1);
}
#4
自己实现也挺麻烦的,参考一下吧:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main(String[] args) {
String[] strs = find("****市黄浦区***********市浦东新区*******", '市', '区');
System.out.println(Arrays.toString(strs));
}
public static String[] find(String str, char start, char end) {
if(str == null || str.length() == 0) {
return new String[0];
}
char[] chs = str.toCharArray();
boolean isStart = false;
List<String> list = null;
for(int i = 0, offset = i; i < chs.length; i++) {
if(chs[i] == start) {
isStart = true;
offset = i;
continue;
}
if(isStart && chs[i] == end) {
list = addSub(list, chs, offset + 1, i - offset - 1);
continue;
}
}
return toArray(list);
}
private static List<String> addSub(List<String> list, char[] chs, int start, int end) {
if(list == null) {
list = new ArrayList<String>(chs.length / 2);
}
list.add(new String(chs, start, end));
return list;
}
private static String[] toArray(List<String> list) {
if(list == null || list.size() == 0) {
return new String[0];
}
return list.toArray(new String[list.size()]);
}
}
#5
北京游戏公司急聘java游戏开发师
职位描述
1、拥有扎实的JAVA基础,算法基础。
2、熟悉JAVA多线程编程,JAVA网络编程,并有一年以上的全职编程经验。
3、很好的逻辑思维能力与想像力。
4、熟悉MYSQL数据库,熟练使用SQL语句。
5、勤奋好学,对新知识掌握速度快。
6、踏实肯干,能够很好的进行团队合作,和任务多时的加班。
7、热爱游戏,并希望把游戏编程当成自己的事业。
有意者可投简历至:Email: zhongmiaowl@gmail.com
职位描述
1、拥有扎实的JAVA基础,算法基础。
2、熟悉JAVA多线程编程,JAVA网络编程,并有一年以上的全职编程经验。
3、很好的逻辑思维能力与想像力。
4、熟悉MYSQL数据库,熟练使用SQL语句。
5、勤奋好学,对新知识掌握速度快。
6、踏实肯干,能够很好的进行团队合作,和任务多时的加班。
7、热爱游戏,并希望把游戏编程当成自己的事业。
有意者可投简历至:Email: zhongmiaowl@gmail.com
#6
public static void main(String[] args) {
String str = "****市黄浦区*****市黄浦2区*市黄浦3区* ";
Matcher m = Pattern.compile("市(.+?)区").matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
}
=============
打印:
黄浦
黄浦2
黄浦3
#1
楼主不用正则也行吧。
str.substring(str.indexOf("市")+1,str.lastIndexOf("区"))
你把可能的情况都说一下。
str.substring(str.indexOf("市")+1,str.lastIndexOf("区"))
你把可能的情况都说一下。
#2
楼上正解
#3
String result = "";
Pattern p = Pattern.compile("\w*市(\w*)区\w*");
Matcher m = p.matcher(str);
if (m.find()) {
result = m.group(1);
}
Pattern p = Pattern.compile("\w*市(\w*)区\w*");
Matcher m = p.matcher(str);
if (m.find()) {
result = m.group(1);
}
#4
自己实现也挺麻烦的,参考一下吧:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main(String[] args) {
String[] strs = find("****市黄浦区***********市浦东新区*******", '市', '区');
System.out.println(Arrays.toString(strs));
}
public static String[] find(String str, char start, char end) {
if(str == null || str.length() == 0) {
return new String[0];
}
char[] chs = str.toCharArray();
boolean isStart = false;
List<String> list = null;
for(int i = 0, offset = i; i < chs.length; i++) {
if(chs[i] == start) {
isStart = true;
offset = i;
continue;
}
if(isStart && chs[i] == end) {
list = addSub(list, chs, offset + 1, i - offset - 1);
continue;
}
}
return toArray(list);
}
private static List<String> addSub(List<String> list, char[] chs, int start, int end) {
if(list == null) {
list = new ArrayList<String>(chs.length / 2);
}
list.add(new String(chs, start, end));
return list;
}
private static String[] toArray(List<String> list) {
if(list == null || list.size() == 0) {
return new String[0];
}
return list.toArray(new String[list.size()]);
}
}
#5
北京游戏公司急聘java游戏开发师
职位描述
1、拥有扎实的JAVA基础,算法基础。
2、熟悉JAVA多线程编程,JAVA网络编程,并有一年以上的全职编程经验。
3、很好的逻辑思维能力与想像力。
4、熟悉MYSQL数据库,熟练使用SQL语句。
5、勤奋好学,对新知识掌握速度快。
6、踏实肯干,能够很好的进行团队合作,和任务多时的加班。
7、热爱游戏,并希望把游戏编程当成自己的事业。
有意者可投简历至:Email: zhongmiaowl@gmail.com
职位描述
1、拥有扎实的JAVA基础,算法基础。
2、熟悉JAVA多线程编程,JAVA网络编程,并有一年以上的全职编程经验。
3、很好的逻辑思维能力与想像力。
4、熟悉MYSQL数据库,熟练使用SQL语句。
5、勤奋好学,对新知识掌握速度快。
6、踏实肯干,能够很好的进行团队合作,和任务多时的加班。
7、热爱游戏,并希望把游戏编程当成自己的事业。
有意者可投简历至:Email: zhongmiaowl@gmail.com
#6
public static void main(String[] args) {
String str = "****市黄浦区*****市黄浦2区*市黄浦3区* ";
Matcher m = Pattern.compile("市(.+?)区").matcher(str);
while (m.find()) {
System.out.println(m.group(1));
}
}
=============
打印:
黄浦
黄浦2
黄浦3