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

该命令可以是:

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

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

2回复

RegEx检查字符串是否以特定字符开头和结尾[关闭]

我需要一个正则表达式来检查字符串是否以特殊字符开头和结尾,例如-
5回复

检查字符串是否以特定模式结尾

如果我有一个像这样的字符串: 要么: 比我的程序应该给我的那句话是有效的,并且具有“工作性”。 如果我有 : 要么: 则我的程序不应告诉我句子中有“作品”。 因此,我正在寻找java字符串以在具有的句子结尾处找到一个单词。 ,或, /之前。 我该如
2回复

如何在Java中检查字符串是否为字母数字

我正在尝试检查输入的字符串是否为字母数字。我尝试了一些正则表达式,例如, 但是,如果字符串仅包含数字或仅包含字母或字母数字,那么所有这些方法都将起作用。 但我需要检查字符串应为AlphaNumberic且仅以数字开头。 请帮帮我。
4回复

如何检查字符串以空格开头还是结尾

输入播放器名称。 名称的长度必须在1到6个字符之间,并且不能以空格字符开头或结尾。 如果不符合要求,请重新输入名称。
2回复

Java RegEx - 检查字符串是否以确切的位数结尾

Java matches方法为以下所有方法返回'true' 由于s20180122_2有更多数字,我希望第二和第三次检查返回'false',但它们没有。 我如何强制执行(仅8位数。不多,不少)匹配? 谢谢你的帮助。
2回复

java-检查字符串ArrayList中是否有多个特定的整数/字母

我正在开发一个益智程序,其中用户输入两个String数组(xs,ys),该数组的长度可能会有所不同。 每个数组中的每个元素都彼此等效。 我必须搜索两个数组并找到相似的值来解决它。 我所做的是创建一个包含等效元素的ArrayList。 但是,我必须过滤ArrayList以查找特定值。
5回复

使用正则表达式检查字符串是否以数字字符开头和结尾

我正在努力 永远不会调用if子句。
2回复

检查字符串是否包含数组中的任何字母-JAVA

底线。 如果“ V”字符串中的任何字母都在“ A”中,我希望它继续“成功”
5回复

如何检查字符串中的前2个字母是否为特定值

编辑谢谢大家的帮助,现在可以正常工作了。 因此,我有一个问题要问用户,我没有问题,但是我认为扩展程序是很好的,这样如果有人输入像McCabe这样的姓氏,它将打印T McC而不是TM值。 我只是不确定如何比较secondname字符串的前两个字母是否为"mc" 。
1回复

如何从后面开始检查字符串是否包含特定字母

如何找到一个. 字符串从后到前