CommandVO.java
上传用户:hensond
上传日期:2021-12-27
资源大小:817k
文件大小:2k
源码类别:

软件工程

开发平台:

Java

  1. package com.company;
  2. import java.util.ArrayList;
  3. import java.util.HashSet;
  4. /**
  5.  * @author cbf4Life cbf4life@126.com
  6.  * I'm glad to share my knowledge with you all.
  7.  * 命令字符串解析
  8.  */
  9. public class CommandVO {
  10. //定义参数名与参数的分割符号,一般是空格
  11. public final static String DIVIDE_FLAG =" ";
  12. //定义参数前的符号,UNIX一般是-,如ls -la
  13. public final static String PREFIX="-";
  14. //命令名,如ls,du
  15. private String commandName = "";
  16. //参数列表
  17. private ArrayList<String> paramList = new ArrayList<String>();
  18. //操作数列表
  19. private ArrayList<String> dataList = new ArrayList<String>();
  20. //通过构造函数传递进来命令
  21. public CommandVO(String commandStr){
  22. //常规判断
  23. if(commandStr != null && commandStr.length() !=0){
  24. //根据分割符号拆分出执行符号
  25. String[] complexStr = commandStr.split(CommandVO.DIVIDE_FLAG);
  26. //第一个参数是执行符号
  27. this.commandName = complexStr[0];
  28. //把参数放到List中
  29. for(int i=1;i<complexStr.length;i++){
  30. String str = complexStr[i];
  31. //包含前缀符号,认为是参数
  32. if(str.indexOf(CommandVO.PREFIX)==0){
  33. this.paramList.add(str.replace(CommandVO.PREFIX, "").trim());
  34. }else{
  35. this.dataList.add(str.trim());
  36. }
  37. }
  38. }else{
  39. //传递的命令错误
  40. System.out.println("命令解析失败,必须传递一个命令才能执行!");
  41. }
  42. }
  43. //得到命令名
  44. public String getCommandName(){
  45. return this.commandName;
  46. }
  47. //获得参数
  48. public ArrayList<String> getParam(){
  49. //为了方便处理空参数
  50. if(this.paramList.size() ==0){
  51. this.paramList.add("");
  52. }
  53. return new ArrayList(new HashSet(this.paramList));
  54. }
  55. //获得操作数
  56. public ArrayList<String> getData(){
  57. return this.dataList;
  58. }
  59. //获得操作数,返回值为String类型
  60. public String formatData(){
  61. //没有操作数
  62. if(this.dataList.size() ==0){
  63. return "";
  64. }else{
  65. return this.dataList.toString();
  66. }
  67. }
  68. public static void main(String[] args) {
  69. //String str ="ls -l -s -l /usr /password   ";
  70. String str = "ls";
  71. CommandVO vo = new CommandVO(str);
  72. System.out.println("命令名为:"+vo.getCommandName());
  73. System.out.println("参数名为:"+vo.getParam());
  74. System.out.println("操作数为:"+vo.getData());
  75. System.out.println(vo.getParam().contains(""));
  76. }
  77. }