问题描述
- 求大神帮忙解释下这段代码。
-
这是一个从表添加页面的代码。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"; }
解决方案
split是按某个字符,将字符串分割为数组
解决方案二:
String[] str = numberstr.split(";");
String[] str1 = namestr.split(";");
String[] str2 = overtimestr.split(";");
String[] str3 = idstr.split(";");
这里的逻辑你自己才知道吧。
这里作用将数据split 出来。
这里的str3[i];
这个来判断是否和 t 字符串相等。
解决方案三:
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
解决方案四:
st st1 st2 st3这就是定义的几个变量,对应着指定字符串的split操作的返回结果。
而split是对字符串切片的一个函数,将指定的字符串按照某个规则进行分割。
例如"1,2,3,4".split(",")将字符串"1,2,3,4"按","逗号切割后就得到一个数组[1,2,3,4]了。详情参考jdk的split api.