繁体   English   中英

如何获得以+,-,*,/开头的最后一个子字符串?

[英]How do I get the last substring starting with +,-,*,/?

如果我在类似20+567-321的字符串变量中有表达式,那么如何从中提取最后一个数字321 ,其中运算符可以为+-*/

如果字符串表达式只是321 ,我必须得到321 ,这里表达式中没有运算符

您可以通过根据运算符拆分字符串来做到这一点,如下所示:

String[] result = myString.split("[-+*/]");

[+|-|*|/]是正则表达式,用于指定应从中分割字符串的点。 在这里, result[result.length-1]是您所需的字符串。

编辑如@ElliotFrisch所建议,我们需要进行转义-在指定正则表达式时。 因此,以下模式也应该起作用:

String[] result = myString.split("[+|\\-|*|/]");

这是需要转义的字符列表。

链接。

这似乎是学习编程和算法的一项工作,而且我怀疑在只需要最后一个子字符串的情况下,使用Regex进行拆分是否有效。

  1. 从结尾开始,并迭代直到字符串长度倍。
  2. 声明一个空字符串说结果
  3. 虽然循环,是否有这些运营商被发现,返回的结果 ,否则前面加上走过字符字符串结果
  4. 返回结果
String[] output = s.split("[+-/*]");
String ans = output[output.length-1];

这里假设没有空格,并且字符串仅包含数字和算术运算符。

[+-/*]是一个仅与我们在方括号内提供的字符匹配的正则表达式。 我们根据这些字符进行拆分。

如果您想使用StringTokenizer做到这一点:

 public static void main(String args[])

{
   String expression = "20+567-321";
   StringTokenizer tokenizer = new StringTokenizer(expression, "+-*/");
   int count = tokenizer.countTokens();
   if( count > 0){
       for(int i=0; i< count; i++){
           if(i == count - 1 ){
               System.out.println(tokenizer.nextToken());
           }else{
               tokenizer.nextToken();
           }
       }
   } 
}

回想一下,您可以在StringTokenizer中指定多个定界符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM