String mode = "111100111111100011111011";
代表24个小时,1表示有值,0表示无值
想截取成类似这样的结构“00-03”,“06-12”,"16-20","21-23"...
如果是单个值,则截取成类似“04-04”这样,表示4点有值。请大家帮忙写个函数
代表24个小时,1表示有值,0表示无值
想截取成类似这样的结构“00-03”,“06-12”,"16-20","21-23"...
如果是单个值,则截取成类似“04-04”这样,表示4点有值。请大家帮忙写个函数
//00-01
//03-07
//11-17
//20-23是不是转成以上的格式 ?
import java.util.ArrayList;
import java.util.List;public class Test05 {
private static final String TIME_STR = "111100111111100010111011"; public static void main(String[] args) {
for (String s : getValues(TIME_STR)) {
System.out.println(s);
}
} public static List<String> getValues(String str) {
List<String> values = new ArrayList<String>(4);
int len = str.length();
for (int i = 0; i < len; i++) {
char c = str.charAt(i);
if (c == '1') {
int start = i++;
while (i < len && (c = str.charAt(i)) == '1') {
i++;
}
int end = --i;
values.add(intToString(start) + "-" + intToString(end));
}
} return values;
} public static String intToString(int i) {
if (i < 10) {
return "0" + i;
} else {
return String.valueOf(i);
}
}
}这样?:00-03
06-12
16-16
18-20
22-23
import java.util.ArrayList;
import java.util.List;public class Mode { public static String fillStr(int len, String str) { while (str.length() < len) {
str = "0" + str;
}
return str;
}
public static List split(String value){
List list = new ArrayList() ;
String bStr = "";
String eStr = "";
char arr[] = value.toCharArray();
for (int i = arr.length - 1; i >= 0; i--) {
if (arr[i] == '1') {
if ("".equals(bStr)) {
bStr = fillStr(2, String.valueOf(23 - i));
eStr = fillStr(2, String.valueOf(23 - i));
} else{
eStr = fillStr(2, String.valueOf(23 - i));
}
}else{
if (!"".equals(bStr) && !"".equals(eStr)){
list.add(bStr + " - " + eStr) ;
System.out.println(bStr + " - " + eStr);
bStr = "" ;
eStr = "" ;
}
}
}
if (!"".equals(bStr)){
list.add(bStr + " - " + eStr) ;
}
System.out.println(bStr + " - " + eStr);
bStr = "" ;
eStr = "" ;
return list ;
} public static void main(String[] args) {
String mode = "111100111111100011101011"; List list = split(mode) ;
System.out.println("结果:") ;
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " " ) ;
}
}
}
运行结果:import java.util.ArrayList;
import java.util.List;public class Mode { public static String fillStr(int len, String str) { while (str.length() < len) {
str = "0" + str;
}
return str;
}
public static List split(String value){
List list = new ArrayList() ;
String bStr = "";
String eStr = "";
char arr[] = value.toCharArray();
for (int i = arr.length - 1; i >= 0; i--) {
if (arr[i] == '1') {
if ("".equals(bStr)) {
bStr = fillStr(2, String.valueOf(23 - i));
eStr = fillStr(2, String.valueOf(23 - i));
} else{
eStr = fillStr(2, String.valueOf(23 - i));
}
}else{
if (!"".equals(bStr) && !"".equals(eStr)){
list.add(bStr + " - " + eStr) ;
System.out.println(bStr + " - " + eStr);
bStr = "" ;
eStr = "" ;
}
}
}
if (!"".equals(bStr)){
list.add(bStr + " - " + eStr) ;
}
System.out.println(bStr + " - " + eStr);
bStr = "" ;
eStr = "" ;
return list ;
} public static void main(String[] args) {
String mode = "111100111111100011101011"; List list = split(mode) ;
System.out.println("结果:") ;
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " " ) ;
}
}
}
import java.util.ArrayList;
import java.util.List;public class Mode { public static String fillStr(int len, String str) { while (str.length() < len) {
str = "0" + str;
}
return str;
}
public static List split(String value){
List list = new ArrayList() ;
String bStr = "";
String eStr = "";
char arr[] = value.toCharArray();
for (int i = 0 ; i < arr.length ; i++) {
if (arr[i] == '1') {
if ("".equals(bStr)) {
bStr = fillStr(2, String.valueOf(i));
eStr = fillStr(2, String.valueOf(i));
} else{
eStr = fillStr(2, String.valueOf(i));
}
}else{
if (!"".equals(bStr) && !"".equals(eStr)){
list.add(bStr + " - " + eStr) ;
System.out.println(bStr + " - " + eStr);
bStr = "" ;
eStr = "" ;
}
}
}
if (!"".equals(bStr)){
list.add(bStr + " - " + eStr) ;
}
System.out.println(bStr + " - " + eStr);
bStr = "" ;
eStr = "" ;
return list ;
} public static void main(String[] args) {
String mode = "111100111111100011111011"; List list = split(mode) ;
System.out.println("结果:") ;
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " " ) ;
}
}
}结果:00 - 03
06 - 12
16 - 20
22 - 23
结果:
00 - 03 06 - 12 16 - 20 22 - 23
Matcher m = Pattern.compile("1+").matcher(mode);//正则查找多个1组成的字符串
List<String> result = new ArrayList<String>();
while (m.find()) {//如果能找到正则匹配的字符串
result.add(String.format("%02d-%02d", m.start(), m.end()-1)); //追加匹配的开始位置和结束位置
}
System.out.println(result);
public static List<String> convert(String mode) {
Matcher m = Pattern.compile("1+").matcher(mode);//正则查找多个1组成的字符串
List<String> result = new ArrayList<String>();
while (m.find()) {//如果能找到正则匹配的字符串
result.add(String.format("%02d-%02d", m.start(), m.end()-1)); //追加匹配的开始位置和结束位置
}
return result;
}//main函数测试
String mode = "111100111111100011111011";
List<String> list = convert(mode);
System.out.println(list);
String mode = "111100111111100011111011";
Pattern p = Pattern.compile("(1+)|(0+)");
Matcher m = p.matcher(mode);
int start = 0;
int end = 0;
while (m.find())
{
String s = m.group();
end += s.length();
if (s.startsWith("1"))
{
System.out.println(start + "~" + end);
}
start += s.length();
}
我写了一个,感觉写得挺简单的~
还是感谢大家的热情帮忙.