我在检查字符串中是否有字母时遇到一些问题。 现在,我遇到服务器/客户端的情况,服务器将命令发送回客户端。

该命令可以是:

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语句和else if语句相同? 我不能使用末端为,因为RM20 A末端有很多输入。

有没有办法检查中间的东西。 当你得到时,说

“ RM20 A 123213124”作为字符串?

===============>>#1 票数:1

假设您的格式如下:

 <RM Code> <Letter> <Numbers> <Anything else>

然后,您可以执行以下操作:

 String[] values = input.split(" ");

 if(values[1].equals("A")) {
     // Code for A.
 }

===============>>#2 票数: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不为null。

===============>>#3 票数:0

使用正则表达式捕获不同的组。 String regex表达式捕获直到空格为止的所有单词字符。 然后捕获任何字母az或AZ。 然后,如果有空间和其他一些输入,它将捕获并使用它。

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

  ask by Pixel translate from so

未解决问题?本站智能推荐: