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