我需要获取两个不同长度的不同注册号的位置,然后我重复使用我得到的位置。
我需要定位的部分是MS字符停留的地方
我需要告诉系统知道regNo
是否包含MS
并且它做了一些事情。
regNo : BCS/MS/13/09/0001
regNo : BCOM/MS/09/0149
if ( the position 5 and position 6 of regNo equals to S ){
.. do s.thing
}
or
if (the part after / there is MS ){
... do something
}
总结一下,有几个选项:
- 字符串#包含 - 将显示字符串是否包含指定的字符值序列。要记住的重要一点 -
contains
忽略位置。"MS".contains("MS")
和"ABS/MS/".contains("MS")
都返回 true。如果您需要检查"MS"是否位于字符串中的某个位置contains
可能不是最佳选择。 - String#indexOf - 返回此字符串中指定子字符串第一次出现的索引。
- 字符串#matches - 告知此字符串是否与给定的正则表达式匹配。它对于验证字符串的格式非常有用,尤其是在子字符串的位置可能变化的情况下。在您的情况下,"MS"可能处于不同的位置。所以我们可以使用类似这样的东西:
System.out.println("BCS/MS/13/09/0001".matches("[A-Z]+\/MS.*"));
或更具体的System.out.println("BCOM/MS/09/0149".matches("[A-Z]{3,4}\/MS(?:\)"));
第一个正则表达式解释第二个正则表达式
使用正则表达式
final String msg = "BCS/MS/13/09/0001";
System.out.println((msg.split("/")[1]));
我使用了:
String msg = "BCS/MS/13/09/0001";
if (ms.contains("MS"))
{
Do . sothing
}
它奏效了
String str1 = "BCS/MS/13/09/0001";
int pos1= str1.indexOf("MS");
String str2 = "BCOM/MS/09/0149";
int pos2= str2.indexOf("MS");
现在,您可以在任何需要的地方使用值 pos1 和 pos2。
对于更具体的搜索,您可以像下面这样做,
String str1 = "BCS/MS/13/09/0001";
int pos1= str1.indexOf("/MS/")+1;
String str2 = "BCOM/MS/09/0149";
int pos2= str2.indexOf("/MS/")+1;