从变量String中获取单词部分



我一直在实现一个应用程序来检索传入String参数中的单词,这个String参数可以变化,因为它是一个URL,但几乎所有传入URL的模式都是相同的。例如:

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

GET /com.myapplication.filesystem.ws.ModuleFileSystem/getIdFolders/jsonp?idFolder=idFis1&callback=__gwt_jsonp__.P0.onSuccess&failureCallback=__gwt_jsonp__.P0.onFailure HTTP/1.1

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

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

我一直在考虑使用StringTokenizer类或String#split方法,但我不确定它们是否是最好的选择。我试过了,很容易用indexOf得到Module开头的单词,但是如何从某些情况下切断单词,如果它像第一个示例一样带有空白,或者它在第二个示例中带有"/"(斜杠)。我知道我可以写一个"if"语句,当它是空格或斜杠时就把它截断,但我想知道是否有另一种更动态的方法。

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

我不确定这是最好的解决方案,但你可以试试这个:

String[] tmp = yourString.Split("\.|/| ");
for (int i=0; i< tmp.length(); i++) {
    if (tmp[i].matches("^Module.*")) {
       return tmp[i];
    }
}
return null;

可以这样使用String.indexOfString.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));
  }
}

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

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));
}

相关内容

  • 没有找到相关文章

最新更新