Java 从变量字符串中获取单词部分

Java 从变量字符串中获取单词部分,java,string,stringtokenizer,Java,String,Stringtokenizer,我已经实现了一个应用程序来检索传入字符串参数中的单词,这个字符串参数可能会有所不同,因为它是一个URL,但是几乎所有传入URL的模式都是相同的。例如,我可以: GET /com.myapplication.v4.ws.monitoring.ModuleSystemMonitor HTTP/1.1 或 因此,在任何情况下,我都要提取以Module开头的单词,例如,对于我要获取的第一个传入参数:ModuleSystemMonitor。对于第二个,我想得到一个词:ModuleFileSystem 这

我已经实现了一个应用程序来检索传入字符串参数中的单词,这个字符串参数可能会有所不同,因为它是一个URL,但是几乎所有传入URL的模式都是相同的。例如,我可以:

GET /com.myapplication.v4.ws.monitoring.ModuleSystemMonitor HTTP/1.1

因此,在任何情况下,我都要提取以Module开头的单词,例如,对于我要获取的第一个传入参数:ModuleSystemMonitor。对于第二个,我想得到一个词:ModuleFileSystem

这是要求,我不允许做任何其他事情,除了这个:只是一个方法,接收一行并尝试提取我提到的单词:ModuleSystemMonitor和ModuleFileSystem

我一直在考虑使用
StringTokenizer
class或
String#split
方法,但我不确定它们是否是最佳选择。我试过了,很容易用indexOf获得以Module开头的单词,但是如果在某些情况下,它像第一个示例一样带有空格,或者在第二个示例中带有“/”(斜杠),那么如何剪切单词呢。我知道我可以做一个“如果”语句,当它是空白或者是斜杠的时候就把它删掉,但是我想知道是否还有其他更具动态性的方法


提前感谢您的时间和帮助。致以最诚挚的问候。

我不确定这是否是最好的解决方案,但您可以尝试以下方法:

String[] tmp = yourString.Split("\\.|/| ");
for (int i=0; i< tmp.length(); i++) {
    if (tmp[i].matches("^Module.*")) {
       return tmp[i];
    }
}
return null;
String[]tmp=yourString.Split(“\\.\124;/”);
对于(int i=0;i
您可以像这样使用
String.indexOf
String.substring

int startIndex = url.indexOf("Module");    

for (int index = startIndex + "Module".length; i < url.length; i++
{
  if (!Character.isLetter(url.charAt(index)) 
  {
    return url.substring(startIndex, index));
  }
}
intstartindex=url.indexOf(“模块”);
对于(int index=startIndex+“Module”.length;i

基于第一个非字母字符是单词的结尾标记的假设。

如何确定单词的结尾?空格或斜杠或其他什么?空格或斜杠,这两个字符中的任何一个,我知道我可以使用条件生成if并切断单词,但我不知道这是否是最好的方法,我认为一定有更“动态”的东西。
String stringToSearch = "GET /com.myapplication.v4.ws.monitoring.ModuleSystemMonitor    HTTP/1.1";
Pattern pattern = Pattern.compile("(Module[a-zA-Z]*)");
Matcher matcher = pattern.matcher(stringToSearch);
if (matcher.find()){
        System.out.println(matcher.group(1));
}
String stringToSearch = "GET /com.myapplication.v4.ws.monitoring.ModuleSystemMonitor    HTTP/1.1";
Pattern pattern = Pattern.compile("(Module[a-zA-Z]*)");
Matcher matcher = pattern.matcher(stringToSearch);
if (matcher.find()){
        System.out.println(matcher.group(1));
}