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

时间:2017-09-18 02:59:07

标签: java algorithm

如果我在像20+567-321这样的字符串变量中有表达式,那么如何从中提取最后一个数字321,其中运算符可以是+-,{ {1}},*

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

4 个答案:

答案 0 :(得分:4)

您可以根据您的运算符拆分字符串,如下所示:

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

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

修改 正如@ElliotFrisch所建议的,我们需要在指定它时在正则表达式中转义-。因此,遵循模式也应该有效:

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

以下是他们需要转义的字符列表。

Link.

答案 1 :(得分:4)

这似乎是学习编程和算法的任务,而且我怀疑使用正则表达式进行拆分在只需要最后一个子字符串的情况下会很有效。

  1. 从结束开始,迭代直到字符串的长度次。
  2. 声明一个空字符串,说结果
  3. 循环时,如果找到任何运算符,则返回结果,否则将>遍历字符串结果
  4. 返回结果

答案 2 :(得分:0)

String[] output = s.split("[+-/*]");
String ans = output[output.length-1];

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

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

答案 3 :(得分:0)

如果您想使用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中指定多个分隔符。