检查字符串是否以特定字母开头或结尾 - java

时间:2014-04-19 22:58:21

标签: java

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

该命令可以是:

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"作为一个字符串?

3 个答案:

答案 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