String str = "房估字(2014)第YPQD0001号,房估字(2014)第YPQD00022号,房估字(2014)第YPQD000333号,房估字(2014)第YPQD0004444号";
如何截取第和号中间的所有值,别保存在list中呢?中间的值每个都不一样
string str = "房估字(2014)第YPQD0001号,房估字(2014)第YPQD00022号,房估字(2014)第YPQD000333号,房估字(2014)第YPQD0004444号"; Regex reg = new Regex(@"(YPQD\d{4,10})"); var match = reg.Matches(str); List<string> result = new List<string>(); foreach (Match item in match) { result.Add(item.ToString()); }
正则(?<=房).*?(?=号)
看不懂
@荆棘人: 正则表达式啊.找出前面是房后面是号的中间一段....
@荆棘人: 看不懂没事,会用就行。
如果是C#就简单了。。。
str.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries).Select(i=>这里面写处理代码).ToList()
其中相关的处理代码可能用正则,可能用自己代码,其实自己用indexof等相关代码就可以满足要求。。。
另外,如果不是C#,而是Java,也就是按正常思路,先split,然后再依次删掉不需要的东西吧。。。
import java.beans.IntrospectionException; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) throws IntrospectionException { String str = "房估字(2014)第YPQD0001号,房估字(2014)第YPQD00022号,房估字(2014)第YPQD000333号,房估字(2014)第YPQD0004444号"; Pattern p = Pattern.compile("(?<=第).+?(?=号)"); Matcher matcher = p.matcher(str); while (matcher.find()) { System.out.println(matcher.group()); } }
楼上 + 1
String str = "房估字(2014)第YPQD0001号,房估字(2014)第YPQD00022号,房估字(2014)第YPQD000333号,房估字(2014)第YPQD0004444号";
String[] str_1 = str.split("号");
List<String> list = new ArrayList<>();
for (String s : str_1) {
list.add(s.substring(s.indexOf("第") + 1));
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
上面给的答案都不错。
上面 的答案已经可以解决
大神常出没,答案有几个了。
大家好热情,不仅解决了 ,还给出了好几个解决方案。