日期:2014-05-18  浏览次数:20770 次

一串字符,前后的字符都是固定的,怎么求得中间的变化的字符串?
String   a= "前面的字符串 ";
String   b= "中间的字符串 ";
String   c= "后面的字符串 ";

举个例子吧
d:\新建文件夹\新建文件夹\新建文件夹\1234\新建文件夹2
d:\新建文件夹\新建文件夹\新建文件夹\5678\新建文件夹2
d:\新建文件夹\新建文件夹\新建文件夹\912345\新建文件夹2

或者
e:\我的文档\我的文档\我的文档\1234\我的文档在后面
e:\我的文档\我的文档\我的文档\abcede\我的文档在后面
e:\我的文档\我的文档\我的文档\90afldsaf\我的文档在后面

怎么求中间的数字或者字符串?


------解决方案--------------------
package org.battwofame.hellojava.test.test2;

public class TestE {

public void test1() {
String str = "abc中间的字符mde ";
String str1 = str.substring(str.indexOf( "abc ")+3);//这3是前面字符的长度
String str2 = str1.substring(0, str.lastIndexOf( "mde ")-3);//这3是后面字符的长度
System.out.println(str2); //结果
}

public static void main(String[] args) {
TestE te = new TestE();
te.test1();
}
}

------解决方案--------------------
楼上的真快,楼主的问题好像真的那么简单
------解决方案--------------------
最容易想到的:
顺着string循环,得到前面相同部分字符串,反过来,得到后面相同部分字符串~
------解决方案--------------------
String str1 = str.substring(str.indexOf( "abc ")+3);//这3是前面字符的长度
------------------
貌似还不知道相同的字符是什么吧~~~~
------解决方案--------------------
让我想一下
------解决方案--------------------
up
------解决方案--------------------
把你做的那个题目的原题帖出来~~~
------解决方案--------------------
可以用正则:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
public static void main (String[] args) {
Pattern pattern = Pattern.compile( "([0-9a-z]+)\\\\新建文件夹2 ", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher( "d:\\新建文件夹\\新建文件夹\\新建文件夹\\1234\\新建文件夹2 ");
if (matcher.find()) {
System.out.println(matcher.group(1)); // => 1234
}

Matcher matcher2 = pattern.matcher( "d:\\新建文件夹\\新建文件夹\\新建文件夹\\akkffkakfa222\\新建文件夹2 ");
if (matcher2.find()) {
System.out.println(matcher2.group(1)); // => akkffkakfa222
}
}
}

------解决方案--------------------
您可以用正则表达式试试:
(? <=\\)[a-zA-Z0-9]*(?=\\)

-----------------------------------------------
msn:bdbox@hotmail.com
请给我一个与您交流的机会
------解决方案--------------------
import java.util.regex.*;

public class Rex {

public static String getResult(String prefix, String suffix, String str) {
String rex = String.format( "(%s\\\\\\w+\\\\%s) ", prefix, suffix);
Pattern pa = Pattern.compile(rex);
Matcher ma = pa.matcher(str);
boolean b = ma.find();
String result = " ";
if (b) {
result = ma.group(1);
System.out.println(result);
String[] a=result.split( "\\\\ ");
if(a.length==3)
result=a[1];
}
System.out.println(result);
return result;
}

public static void main(String[] args) {
String aa = getResult( "我的文档 ", "我的文档在后面 ",
"e:\\我的文档\\我的文档\\我的文档\\kk\\我的文档在后面 ");