2 qq 31419999 qq_31419999 于 2016.01.27 15:43 提问

求大神帮忙解释下这段代码。

这是一个从表添加页面的代码。currentx是当前页数。我想问下 st st1 st2 st3是什么意思,就是split(;);这个方法我不是很清楚什么意思,还有下面的!ss.equals("t") t是什么。 传参什么的我晓得。

@RequestMapping("/addProcess.do")
public String addProcessMaintenance(String currentx, String ids, String idstr, String numberstr, String namestr, String overtimestr, HttpServletRequest request, Long pageNo, Model model, String businessStatus,String nameid){
String[] str = numberstr.split(";");
String[] str1 = namestr.split(";");
String[] str2 = overtimestr.split(";");
String[] str3 = idstr.split(";");
int current = Integer.parseInt(currentx);

    for(int i = 0; i < str3.length; i++){
        AccountingProcessChild pm = new AccountingProcessChild();
        String ss = str3[i];
        if(!ss.equals("t")){
            pm = accountingProcessService.findProcessChildById(str3[i]);
            try{
                pm.setNode(Integer.parseInt(str[i]));
                pm.setNodeName(str1[i]);
                pm.setOverTimeNumber(Integer.parseInt(str2[i]));
            }catch(Exception e){
                System.out.println("信息错误,请联系管理员!");
            }

            accountingProcessService.update(pm);
        }else{
            try{
                pm.setNode(Integer.parseInt(str[i]));
                pm.setNodeName(str1[i]);
                pm.setOverTimeNumber(Integer.parseInt(str2[i]));
                pm.setParent(ids);
            }catch(Exception e){
                System.out.println("信息错误,请联系管理员!");
            }

            accountingProcessService.save(pm);
        }
    }

    AccountingProcess ap = accountingProcessService.findById(ids);
    Page<AccountingProcessChild> page = null;
    page = accountingProcessService.findProcessChild(ids, current);
    model.addAttribute("page", page);
    model.addAttribute("ap", ap);
    model.addAttribute("businessStatus", businessStatus);

    return "/accounting/accountingProcessEdit";
}

4个回答

bdmh
bdmh   Ds   Rxr 2016.01.27 15:47

split是按某个字符,将字符串分割为数组

rui888
rui888   Ds   Rxr 2016.01.27 15:48
 String[] str = numberstr.split(";");
String[] str1 = namestr.split(";");
String[] str2 = overtimestr.split(";");
String[] str3 = idstr.split(";");

这里的逻辑你自己才知道吧。
这里作用将数据split 出来。

这里的str3[i];
这个来判断是否和 t 字符串相等。

u013429827
u013429827   2016.01.27 15:49

public String[] split(String regex,
int limit)根据匹配给定的正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。

limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。

例如,字符串 "boo:and:foo" 使用这些参数可生成以下结果:

Regex Limit 结果
: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" }

调用此方法的 str.split(regex, n) 形式与以下表达式产生的结果完全相同:

Pattern.compile(regex).split(str, n)

参数:
regex - 定界正则表达式
limit - 结果阈值,如上所述
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
抛出:
PatternSyntaxException - 如果正则表达式的语法无效
从以下版本开始:
1.4

wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.01.30 15:34

st st1 st2 st3这就是定义的几个变量,对应着指定字符串的split操作的返回结果。
而split是对字符串切片的一个函数,将指定的字符串按照某个规则进行分割。
例如"1,2,3,4".split(",")将字符串"1,2,3,4"按","逗号切割后就得到一个数组[1,2,3,4]了。详情参考jdk的split api.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!