zoukankan      html  css  js  c++  java
  • Java如何循环数组并使用Split

    场景: 当写方法时遇到1个参数有3个值, 该参数类型为数组。    例如:  aaa|bbb|ccc  .  而且需要循环打印,这个时候我们就需要用数组循环输出的方法。

    一:feature 示例

        When I click on menu 时间管理>休假结余>休假结余设立 from HCM page
        And I advance search staff no 0006
        Then I select leaveCode for NAL|SL2|OL|

    二: steps 示例:

    @Then("^I select leaveCode for (.+)$")
        public void i_select_leaveCode_for(String leaveCode) throws Throwable {
            vp.selectLeaveCodeFor(leaveCode);
        }

    三:  Page 示例:

         

     /**
          * 休假结余设立菜单,筛选多个休假类型。
          * @param leaveCode
         * @throws Exception 
          */
         public void selectLeaveCodeFor(String leaveCode) throws Exception {
             waitFor(By.xpath("//span[@id='divLeaveCodesShowWindow']")).click();
             String[] array = leaveCode.split("\|");    
             for (int i = 0; i < array.length; i++) {
                String xpath = "//tr[./td[text()='"+ array[i] +"']]/td[1]/input";
                waitFor(By.xpath(xpath)).click();
            }
             waitLoading();
             waitFor(By.xpath("//input[@id='confirmdivLeaveCodesSelection'][@value='确认']")).click();
             waitFor(By.xpath("//a[@id='btnSearch']/i")).click();
             waitLoading();
         }

    场景图:

                 

    效果图:

    四:Split 常见使用方法

    在java.lang包中有String.split()方法,返回是一个数组

    我在应用中用到一些,给大家总结一下,仅供大家参考:

    1、如果用“.”作为分隔的话,必须是如下写法,String.split("\."),这样才能正确的分隔开,不能用String.split(".");

    2、如果用“|”作为分隔的话,必须是如下写法,String.split("\|"),这样才能正确的分隔开,不能用String.split("|");

    “.”和“|”都是转义字符,必须得加"\";

    3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如,“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or");

    使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。 

    我们看jdk doc中说明  

    public String[] split(String regex)

     Splits this string around matches of the given regular expression. 

    参数regex是一个 regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码用竖线 | 分隔字符串,你将得不到预期的结果

    例如情况A: aaa|bbb|ccc

        String[] aa = "aaa|bbb|ccc".split("\|"); 这样才能得到正确的结果
    
        for (int i = 0 ; i <aa.length ; i++ ) {
    
          System.out.println("--"+aa[i]); 
    
        } 

    例如B: aaa*bbb*ccc

        String[] aa = "aaa|bbb|ccc".split("\*"); 这样才能得到正确的结果    
    
        for (int i = 0 ; i <aa.length ; i++ ) {
    
          System.out.println("--"+aa[i]); 
    
        }  
  • 相关阅读:
    第三方接口开发规范
    项目经理、技术经理、team leader
    ibatis #和$符号的区别,传入字符串而不加引号
    WindowManager.LayoutParams详解
    AIDL 编译报can be an out parameter, so you must declare it as in, out or inout原因探究
    map里的keyset()和entryset()方法.
    android 使用代码实现 RelativeLayout布局
    Android中的Selector
    intentfilter 之 data 「scheme, host, port, mimeType, path, pathPrefix, pathPattern」
    找信息的方法
  • 原文地址:https://www.cnblogs.com/Shanghai-vame/p/8232833.html
Copyright © 2011-2022 走看看