在java中拆分像push1234这样的字符串

时间:2013-03-06 23:23:29

标签: java string split

所以,请耐心等待,因为我在这里有一个很长的问题,我在java中有一些代码使用数组列表来实现堆栈。我需要能够输入命令“push”来向堆栈添加内容。但是我的问题是它必须采用pushSTUFF格式。

“STUFF”是什么,大写,小写,字符串,int等。我一直试图实现这个的方法是使用字符串split方法,其中PUSH是分隔符。然后命令被传递给switch case。

我很快就意识到分裂被丢弃了,至少据我所知,并且开关盒的情况是按顺序输入而不是pushSTUFF。

在考虑这个问题时,我提出了几种可以做到这一点的方法。我只是不知道他们是否可能或如何做到这些。

所以,

  1. 有没有办法分割像pushSTUFF这样的字符串并保留两个部分(push和STUFF)

  2. 有没有办法从字符串中拆分未知长度或内容的东西(因为我不知道用户输入什么,STUFF未知)

  3. 有没有办法告诉switch case寻找pushSTUFF,而不是只推(因为STUFF未知)。

  4. 这些都有可能吗?如果是这样,你会推荐什么?

    我确信有更好的方法但是因为我还在学习java,所以这些似乎是最好的。此外,我没有发布任何代码,因为我觉得这个问题没有必要。如果你需要的话我会张贴一些。请问,我很乐意帮忙。

    (tl; dr)是否可以执行上述1,2或3中的任何一项,如果是,如何执行? 提前谢谢。

4 个答案:

答案 0 :(得分:1)

不是拆分字符串,而是可以使用带有组的正则表达式并迭代它的匹配部分(如您所见,拆分的字符将被丢弃)。

对于#1,您可以执行类似(伪代码)的操作:

   regex = (push)(.*)
   stuff = groups[1]

这也应该涵盖#2,因为它会在推送后匹配所有字符。

我不完全确定你在#3中的要求。

如果您不熟悉java正则表达式,那么有一个正则表达式教程here

您还可以查看StringTokenizer,它可以选择保留分隔符。

答案 1 :(得分:1)

如果格式始终是push * SOMETHING *为什么你不使用String.substring()?

你可以这样做:

String something = "pushSTUFF".substring(4);

通过这种方式,您将始终获得推送背后的任何内容。

我真的不明白你在没有看到实际代码的情况下想要实现的目标,但你的问题似乎很简单,可以通过这种方式解决。

答案 2 :(得分:0)

您可以搜索任何大写字母并使用String.substring(...)

Find if first character in a string is upper case, Java

答案 3 :(得分:0)

使用.indexOf并找到推送:

public class splitstring {
 public static void main(String[] args){
  String tosplit, part1, part2 = new String();
  int ind = 0;
  tosplit = "push1234";
  ind = tosplit.indexOf("push");
  part1 = tosplit.substring(ind,ind + 4);
  part2 = tosplit.substring(ind + 4, tosplit.length());
 }
}