-
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
3个答案 按时间排序 按投票排序
-
采纳的答案
1.你如果能保证1_X在3_X前面,就声明一个变量,保存截取的第一个字符,如果当前截取的和之前的不一样就说明已经循环到了下一个时间段。这样就能获得你要的结果。
2.如果不能保证,就把截取的第一个字符放到Map中,key就是你的第一个字符,value就是拼接的字符,每次先拿截取的第一个字符串查询Map中的值,有就拼接,没有就添加一个。2013年8月07日 18:01
-
字符串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字符串处理是编程中常见的任务,这里我们详细讨论一下Java中字符串截取及相关方法。 1. `length()`:此方法返回字符串的长度,即字符的数量。例如,`s.length()`会返回字符串`s`中字符的个数。 2. `charAt(int...
- `StringBuffer(String str)`:创建一个包含指定字符串内容的`StringBuffer`对象。 - `StringBuffer(CharSequence chars)`:创建一个包含指定字符序列内容的`StringBuffer`对象。 ##### (1) 获取长度和容量:`...
- `indexOf(String str)`: 查找子字符串首次出现的位置。 - `substring(int beginIndex, int endIndex)`: 截取字符串的一部分。 - `trim()`: 去除字符串两端的空白字符。 - `toUpperCase()`/`toLowerCase()`: 将...
实验通过具体的编程任务,如检查Java文件名和邮箱格式的合法性,以及实现一个顾客消费管理系统,加深对所学知识的理解与实践。 #### 字符串操作精解 在Java中,`String`类表示不可变的字符串,而`StringBuffer`则...
`length()`返回字符串长度,`trim()`去除两端空白,`startsWith()`和`endsWith()`检查字符串是否以指定前缀或后缀开头或结束,`contains()`检查是否包含子字符串。 8. **字符串与对象** `hashCode()`方法返回字符...
这个方法用于截取字符串的一部分,例如`str.substring(startIndex, endIndex)`,返回从开始索引到结束索引前的子字符串。 5. **indexOf() 和 lastIndexOf()**: 这两个方法分别用于查找指定字符或子字符串在原...
11. `indexOf(String str)` 和 `lastIndexOf(String str)`:查找子字符串第一次出现的位置(`indexOf()`)和最后一次出现的位置(`lastIndexOf()`)。 12. `substring(int startIndex)` 和 `substring(int ...
截取从指定起始索引到指定结束索引(不包括结束索引)的子字符串。例如: ```java String s2 = jerry.substring(2, 5); // "lov" ``` **15. `replace(char oldChar, char newChar)`方法:** 替换字符串中的...
3. **字符串方法**:`String`类提供了丰富的内置方法,如`length()`返回字符串长度,`charAt(int index)`获取指定索引处的字符,`substring(int beginIndex, int endIndex)`截取子字符串,`indexOf(String str)`查找...
`LOCATE(substr, str)`函数在字符串`str`中查找子字符串`substr`的首次出现位置。如果未找到,它将返回0。此外,`LOCATE(substr, str, start_pos)`版本允许我们从特定的起始位置`start_pos`开始查找。这在我们需要多...
- `substring(int beginIndex, int endIndex)` 截取子字符串。 - `replace(char oldChar, char newChar)` 替换所有出现的指定字符。 - `replaceAll(String regex, String replacement)` 使用正则表达式进行替换。...
- **判断是否以指定字符串开头或结尾**:`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...
- `substring(int beginIndex, int endIndex)`和`substring(int beginIndex)`方法用于截取字符串中指定部分的子字符串,如`x.substring(3, 7)`返回从索引3到索引6(不包括7)的子字符串"defc"。 3. 字符串转换与...
首先,我们来看`getStringTonkenizer`方法,它用于根据指定的分隔符将一个字符串拆分成多个子字符串,并存储到`Vector`中。这里使用了`java.util.StringTokenizer`类,这是一个古老的分词工具,它可以按照指定的分隔...
除了构造方法,`String`类还提供了丰富的API用于操作字符串,例如`length()`获取长度,`charAt(int index)`获取指定位置的字符,`substring(int beginIndex, int endIndex)`截取子字符串,`indexOf(String str)`查找...
- `indexOf(String str)`/`lastIndexOf(String str)`:查找子字符串首次出现或最后一次出现的索引。 - `replace(char oldChar, char newChar)`:替换所有出现的旧字符为新字符。 此外,字符串和数组之间也可以进行...
String substring(int beginIndex):返回一个新的字符串,它是此字符串的从beginIndex开始截取到最后的一个子字符串。 String substring(int beginIndex, int endIndex) :返回一个新字符串,它是此字符串从...
7. **分割字符串**:`split()`方法允许根据指定的分隔符将字符串分割成多个子字符串,并返回一个数组。 8. **转换为大写/小写**:`toUpperCase()`和`toLowerCase()`方法分别将字符串转换为大写和小写。 9. **格式...
`length()`返回字符串的长度,`charAt(int index)`获取指定位置的字符,`substring(int index)`截取从指定位置开始到字符串末尾的部分,`indexOf()`和`lastIndexOf()`查找字符或子字符串的出现位置。 字符串的修改...