检查字符串中是否包含字母时,我遇到了一些问题。现在,我有一个服务器/客户端情况,服务器将命令发送回客户端。
该命令可以是:
RM20 B
RM20 L
RM20 I
RM20 A "User input"
RM20 C
如果字母是B,L,I或A或C ??
,我如何检查该字母现在我制作了这段代码:
if ((fromServer.startsWith("RM20 A"))) {
else if ((fromServer.startsWith("RM20 C")))
else {
}
这有用吗?或if语句和if语句是否相同?我无法使用结尾,因为RM20 A最后有一个输入可以很多。
有没有办法检查中间的什么。当你得到,让我们说
" RM20 A 123213124"作为一个字符串?
答案 0 :(得分:1)
假设您的格式类似于:
<RM Code> <Letter> <Numbers> <Anything else>
然后你可以这样做:
String[] values = input.split(" ");
if(values[1].equals("A")) {
// Code for A.
}
答案 1 :(得分:0)
我只会对“A”命令输入使用startsWith()
测试,因为那是唯一具有任意结尾的测试。其他命令具有确切的值,因此您应该使用equals()
测试。这样,您就可以可靠地捕获错误(例如,“RM20 B xyz”)。
static final String A_COMMAND_PREFIX = "RM20 A ";
.
.
.
if (fromServer.startsWith(A_COMMAND_PREFIX)) {
// Process user input
final String userInput = fromServer.substring(A_COMMAND_PREFIX.length());
} else if (fromServer.equals("RM20 B")) {
// Process B command
} else if (fromServer.equals("RM20 L")) {
// Process L command
} else if (fromServer.equals("RM20 I")) {
// Process I command
} else if (fromServer.equals("RM20 C")) {
// Process C command
} else {
// Handle unknown command
}
我假设您已确定fromServer
不为空。
答案 2 :(得分:0)
使用正则表达式捕获不同的组。 String regex
表达式捕获任何单词字符直到空格。然后它捕获任何字母a-z或A-Z。然后,如果有空格和其他输入,它会捕获并使用它。
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class test {
public static void main(String ar[]) throws java.io.IOException {
String regex = "(\\w*) ([a-zA-Z])( (.*))?";
String str1 = "RM20 A";
String str2 = "RM20 B";
String str3 = "RM20 C this is a user message.";
Pattern pattern = Pattern.compile(regex);
Matcher match1 = pattern.matcher(str1);
Matcher match2 = pattern.matcher(str2);
Matcher match3 = pattern.matcher(str3);
String a;
while (match1.find()) {
a = "Group 1: " + match1.group(1) + "\nGroup 2: " + match1.group(2);
System.out.println(a);
}
System.out.println();
while (match2.find()) {
a = "Group 1: " + match2.group(1) + "\nGroup 2: " + match2.group(2);
System.out.println(a);
}
System.out.println();
while (match3.find()) {
a = "Group 1: " + match3.group(1) + "\nGroup 2: " + match3.group(2) + "\nGroup 4: " + match3.group(4);
System.out.println(a);
}
}
}
>>> Group 1: RM20
>>> Group 2: A
>>> Group 1: RM20
>>> Group 2: B
>>> Group 1: RM20
>>> Group 2: C
>>> Group 4: this is a user message.
您还可以捕获输入代码中的字母/数字:
String regex = "([a-zA-Z]*)(\\d*) ([a-zA-Z])( (.*))?";
String str1 = "RM20 A message thingy";
Pattern pattern = Pattern.compile(regex);
Matcher match1 = pattern.matcher(str1);
while (match1.find()) {
System.out.println(match1.group(1));
System.out.println(match1.group(2));
System.out.println(match1.group(3));
System.out.println(match1.group(5));
}
>>> RM
>>> 20
>>> A
>>> message thingy