我在java中创建一个游戏,并希望用户输入一个String来表示移动方向:
MOVE <DIRECTION>
方向是N,E,S或W.我希望能够在“&lt;”之间获得个性。和“&gt;”,这将是最好的方法,因为目前我不能想到一个体面的方法,因为这个字符串可能有不同的大小,例如它可能是:
"MOVE<S>
由于MOVE和&lt;。
之间没有空格非常感谢您的帮助:)
答案 0 :(得分:5)
String s = "MOVE<S>";
char c = s.charAt(s.indexOf("<") + 1);
使用indexOf查找“&lt;”的索引,然后在使用charAt + 1后获取字符。但实际上,你应该查找字符串api。知道它非常有用。
答案 1 :(得分:0)
您可以使用正则表达式从String
:
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
,更具体地说是
http://docs.oracle.com/javase/7/docs/api/java/util/regex/Matcher.html
答案 2 :(得分:0)
这个怎么样?
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
<P>{@code java GetDirectionXmpl}</P>
**/
public class GetDirectionXmpl {
//Create a matcher with a dummy-string, so it can be reused (reset).
private static Matcher mMove = Pattern.compile("^MOVE *<([NEWS])>$").matcher("");
public static final void main(String[] igno_red) {
System.out.println("Null if badly formatted");
System.out.println(getDirection("MOVE<S>"));
System.out.println(getDirection("MOVE<BAD>"));
System.out.println(getDirection("MOVE<W>"));
System.out.println(getDirection("MOVE <N>"));
System.out.println(getDirection("MOVE<N>BAD"));
}
public static final String getDirection(String s_input) {
//Reuse the same matcher
mMove.reset(s_input);
if(!mMove.matches()) {
return null;
}
return mMove.group(1);
}
}
输出:
[C:\java_code\]java GetDirectionXmpl
Null if badly formatted
S
null
W
N
null