0 0

java如何从一个指定的字符串截取相同格式的子字符串5

Hi,

   我在做一个Web请假(图表操作形式)
   老师通过点击表格列选中,表示这个时间请假。
   当老师在一周的表格上点了很多下的时候,Jquery通过样式查找得到
老师选中的时间片ID,形如 (1_1,1_2,1_3,3_3,3_4,3_5)这样一个字符串。
这个形式表示老师星期一,1,2,3节课请假,星期三,3,4,5节课请假。
   因为我在数据里要插入2条记录。
   所以要把(1_1,1_2,1_3,3_3,3_4,3_5)分割成(1_1,1_2)(3_3,3_4,3_5)这2个字符串。
   请问有什么好的算法没有?
   我的想法:1.分割成数组all[]遍历,把_前的数字找出来。去掉重复,
               放到一个临时数组 pre[].
           2.创建数组temp[pre.length]。
                再双重遍历all[]与pre[],
               遍历的时候
               if(all[i].startWith(pre[j]))
                   temp[j]+=all[i]+","
           3.最后得到的temp[]就是要的结果?
  
    总感觉有点麻烦。求更好的算法.

问题补充:我的一个实现,感觉有点笨.
public Map splitChooseLeaveToDay(String ids){
//形如1_2,1_3,1_5,4_1,4_2,4_3分割成(1_2,1<3,1_5),(4_1,4_2,4_3) 两组
String[] all=ids.split(",");
List<String> list=new ArrayList<String>();
for(String ss : all){
String pre=ss.substring(0,2);
if(!list.contains(pre)) list.add(pre);
}
//System.out.print(list.toString());
Map res=new HashMap();
for(String ss:all){
for(String kk:list){
if(ss.startsWith(kk)){
res.put(kk, StringUtil.dealNull(res.get(kk))+","+ss);
}
}
}
Collection<String> c =res.values();      
Iterator it = c.iterator();       
for (; it.hasNext();) {   
String temp=(String)it.next();
System.out.println(temp.substring(1,temp.length()));     
}
return res;
}
2013年8月07日 17:42
  • 大小: 126.6 KB

3个答案 按时间排序 按投票排序

0 0

采纳的答案

1.你如果能保证1_X在3_X前面,就声明一个变量,保存截取的第一个字符,如果当前截取的和之前的不一样就说明已经循环到了下一个时间段。这样就能获得你要的结果。
2.如果不能保证,就把截取的第一个字符放到Map中,key就是你的第一个字符,value就是拼接的字符,每次先拿截取的第一个字符串查询Map中的值,有就拼接,没有就添加一个。

2013年8月07日 18:01
0 0

这个是有多难啊

2013年8月09日 16:20
0 0

字符串1_1,1_2,1_3,3_3,3_4,3_5分隔为数组,将数据类型为M_N的数据用map来保存,针对你所提出的例子,最终map数据为key:1,value:1,2,3;key:3,value:3,4,5

2013年8月07日 18:01

相关推荐

    JAVA字符串截取方法总结[文].pdf

    Java字符串处理是编程中常见的任务,这里我们详细讨论一下Java中字符串截取及相关方法。 1. `length()`:此方法返回字符串的长度,即字符的数量。例如,`s.length()`会返回字符串`s`中字符的个数。 2. `charAt(int...

    java字符串操作大全

    - `StringBuffer(String str)`:创建一个包含指定字符串内容的`StringBuffer`对象。 - `StringBuffer(CharSequence chars)`:创建一个包含指定字符序列内容的`StringBuffer`对象。 ##### (1) 获取长度和容量:`...

    JAVA 字符串应用笔记

    - `indexOf(String str)`: 查找子字符串首次出现的位置。 - `substring(int beginIndex, int endIndex)`: 截取字符串的一部分。 - `trim()`: 去除字符串两端的空白字符。 - `toUpperCase()`/`toLowerCase()`: 将...

    java 数组和字符串

    实验通过具体的编程任务,如检查Java文件名和邮箱格式的合法性,以及实现一个顾客消费管理系统,加深对所学知识的理解与实践。 #### 字符串操作精解 在Java中,`String`类表示不可变的字符串,而`StringBuffer`则...

    Java第6章 字符串 含源代码

    `length()`返回字符串长度,`trim()`去除两端空白,`startsWith()`和`endsWith()`检查字符串是否以指定前缀或后缀开头或结束,`contains()`检查是否包含子字符串。 8. **字符串与对象** `hashCode()`方法返回字符...

    Java 字符串操作源码实例集.rar

    这个方法用于截取字符串的一部分,例如`str.substring(startIndex, endIndex)`,返回从开始索引到结束索引前的子字符串。 5. **indexOf() 和 lastIndexOf()**: 这两个方法分别用于查找指定字符或子字符串在原...

    java中常用的字符串的截取方法[文].pdf

    11. `indexOf(String str)` 和 `lastIndexOf(String str)`:查找子字符串第一次出现的位置(`indexOf()`)和最后一次出现的位置(`lastIndexOf()`)。 12. `substring(int startIndex)` 和 `substring(int ...

    java 中关于字符串的笔记,超级详细

    截取从指定起始索引到指定结束索引(不包括结束索引)的子字符串。例如: ```java String s2 = jerry.substring(2, 5); // "lov" ``` **15. `replace(char oldChar, char newChar)`方法:** 替换字符串中的...

    Java练习字符串课题的源码

    3. **字符串方法**:`String`类提供了丰富的内置方法,如`length()`返回字符串长度,`charAt(int index)`获取指定索引处的字符,`substring(int beginIndex, int endIndex)`截取子字符串,`indexOf(String str)`查找...

    mysql 截取指定的两个字符串之间的内容

    `LOCATE(substr, str)`函数在字符串`str`中查找子字符串`substr`的首次出现位置。如果未找到,它将返回0。此外,`LOCATE(substr, str, start_pos)`版本允许我们从特定的起始位置`start_pos`开始查找。这在我们需要多...

    java常用字符串方法,网络收集,txt版

    - `substring(int beginIndex, int endIndex)` 截取子字符串。 - `replace(char oldChar, char newChar)` 替换所有出现的指定字符。 - `replaceAll(String regex, String replacement)` 使用正则表达式进行替换。...

    字符串1302

    - **判断是否以指定字符串开头或结尾**:`startsWith()` 和 `endsWith()` 分别用来判断字符串是否以某个前缀开始或以某个后缀结束。 4. **字符串的截取** - **substring()** 方法允许我们从字符串中截取一部分。...

    求两个字符串的最长公共字串

    - `#define M 100`:定义常量`M`为100,通常用于指定字符串的最大长度。 ```cpp char* LCS(char left[], char right[]) { int lenLeft = strlen(left); int lenRight = strlen(right); char* c = (char*)malloc...

    0字符串知识点.pdf

    - `substring(int beginIndex, int endIndex)`和`substring(int beginIndex)`方法用于截取字符串中指定部分的子字符串,如`x.substring(3, 7)`返回从索引3到索引6(不包括7)的子字符串"defc"。 3. 字符串转换与...

    Java中关于处理字符的方法集合.doc

    首先,我们来看`getStringTonkenizer`方法,它用于根据指定的分隔符将一个字符串拆分成多个子字符串,并存储到`Vector`中。这里使用了`java.util.StringTokenizer`类,这是一个古老的分词工具,它可以按照指定的分隔...

    java 字符串概述和使用(基础)(csdn)————程序.pdf

    除了构造方法,`String`类还提供了丰富的API用于操作字符串,例如`length()`获取长度,`charAt(int index)`获取指定位置的字符,`substring(int beginIndex, int endIndex)`截取子字符串,`indexOf(String str)`查找...

    【图文】Java语言程序设计3-21-java第4章(数组与字符串).doc

    - `indexOf(String str)`/`lastIndexOf(String str)`:查找子字符串首次出现或最后一次出现的索引。 - `replace(char oldChar, char newChar)`:替换所有出现的旧字符为新字符。 此外,字符串和数组之间也可以进行...

    StringAPI.java

    String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。 String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从...

    Java常用字符串方法小结

    7. **分割字符串**:`split()`方法允许根据指定的分隔符将字符串分割成多个子字符串,并返回一个数组。 8. **转换为大写/小写**:`toUpperCase()`和`toLowerCase()`方法分别将字符串转换为大写和小写。 9. **格式...

    Java程序设计课件:5 数组与字符串_part2.ppt

    `length()`返回字符串的长度,`charAt(int index)`获取指定位置的字符,`substring(int index)`截取从指定位置开始到字符串末尾的部分,`indexOf()`和`lastIndexOf()`查找字符或子字符串的出现位置。 字符串的修改...

Global site tag (gtag.js) - Google Analytics