如何使用数组或其他技术在java中使用字符串位置



我需要获取两个不同长度的不同注册号的位置,然后我重复使用我得到的位置。

我需要定位的部分是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;

最新更新