【问题标题】:How to get one character from a String如何从字符串中获取一个字符
【发布时间】:2014-02-23 15:30:55
【问题描述】:
我正在用java创建一个游戏,并希望用户输入一个字符串来移动方向,格式为:
MOVE <DIRECTION>
方向是 N、E、S 或 W。我希望能够获得“”之间的单个字符,这样做的最佳方法是什么,如目前我想不出一个像样的方法,因为这个字符串可能有不同的大小,例如可能是:
"MOVE<S>
由于 MOVE 和 <.> 之间没有空格
非常感谢您的帮助:)
【问题讨论】:
标签:
java
arrays
string
char
element
【解决方案1】:
String s = "MOVE<S>";
char c = s.charAt(s.indexOf("<") + 1);
使用indexOf查找“charAt+1则获取后面的字符。但实际上,您应该查找字符串api。知道是很有用的。
【解决方案3】:
这个怎么样?
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