切割的方法和代码我不会用,有偿求程序演示
供参考
import com.sun.deploy.security.SelectableSecurityManager;
public class Main {
/**
* 在源数据中将指定字符替换成最后的数字
* @param sourceData
* @param repalceChar
* @param index
* @return
*/
public static String replaceDataFromTail(String sourceData, String repalceChar,int index) {
if (!sourceData.substring(index, index + 1).equals(repalceChar))
return sourceData.replaceFirst(repalceChar, sourceData.substring(index, index+1));
if (sourceData.substring(index, index + 1).equals(repalceChar)&& (index== sourceData.length()-1))
return sourceData.replaceFirst(repalceChar, sourceData.substring(index, index+1));
return replaceDataFromTail(sourceData, repalceChar,index+1);
}
/**
* 在源数据中用前面的数字替换指定字符
* @param sourceData
* @param repalceChar
* @param index
* @return
*/
public static String replaceDataFromHead(String sourceData, String repalceChar,int index) {
if (index> sourceData.length()-1)
return sourceData;
if (!sourceData.substring(index,index+1).equals(repalceChar))
return sourceData;
String prevOneChar= "";
String prevTwoChar= "";
String prevThreeChar= "";
switch (index)
{
case 0:
break;
case 1:
prevOneChar = sourceData.substring(index - 1, index);
sourceData = sourceData.replaceFirst(repalceChar, prevOneChar);
sourceData = replaceDataFromHead(sourceData, repalceChar, index + 1);
break;
case 2:
prevOneChar = sourceData.substring(index - 1, index);
prevTwoChar= sourceData.substring(index-2, index-1);
if(prevOneChar.equals(prevTwoChar)) {
sourceData = sourceData.replaceFirst(repalceChar, prevOneChar);
sourceData = replaceDataFromHead(sourceData, repalceChar, index + 1);
}
else
{
return replaceDataFromTail(sourceData,repalceChar,index);
}
break;
default:{
prevOneChar = sourceData.substring(index - 1, index);
prevTwoChar= sourceData.substring(index-2, index-1);
prevThreeChar= sourceData.substring(index-3, index-2);
if ((!prevThreeChar.equals(prevTwoChar)|| prevTwoChar.equals(prevOneChar))&&(!prevOneChar.equals(repalceChar)))
{
sourceData= sourceData.replaceFirst(repalceChar, prevOneChar);
sourceData= replaceDataFromHead(sourceData,repalceChar,index+1);
}
else
{
return replaceDataFromTail(sourceData,repalceChar,index);
}
}
}
return sourceData;
}
/**
* 根据规则拆分指定字符串
* @param sourceData
* @return
*/
public static String splitData(String sourceData, String repalceChar)
{
String tmpData= "";
int startIndex= -1;
for (int index=0;index< sourceData.length();index++){
if (sourceData.substring(index,index+1).equals(repalceChar)) {
sourceData= replaceDataFromHead(sourceData,repalceChar,index);
}
if (startIndex==-1) {
startIndex = index;
continue;
}
if (!sourceData.substring(index,index+1).equals(sourceData.substring(index-1,index)))
{
tmpData= tmpData+" "+ sourceData.substring(startIndex,index+1);
startIndex= -1;
}
}
if (startIndex!= -1)
{
tmpData= tmpData+" "+ sourceData.substring(startIndex,sourceData.length());
}
return tmpData;
}
public static void main(String[] args){
String sourceInfo= "111101XXX011XXXX0XX";
System.out.println("源数据:"+ sourceInfo);
String replaceInfo= splitData(sourceInfo,"X");
System.out.println("替换后数据:"+ replaceInfo);
}
}
https://blog.csdn.net/weixin_39553458/article/details/113083202
二进制,本身不就是0-1,哪里来的X;;;;
这个道理,我不是很明白;
二进制中,除了0和1,还有第三数,那就不是二进制了
public class Text02 {
//将字符结合
public static String combine(String str1, char str2) {
String new_string = str1 + str2;
return new_string;
}
//将字符串加入到列表
public static String[] AddArray(String[] arr, String string) {
int length = arr.length;
String[] new_arr = new String[length + 1];
for (int i = 0; i < length; i++) {
new_arr[i] = arr[i];
}
new_arr[length] = string;
return new_arr;
}
public static String[] split(String string) {
int length = string.length();
String[] arr = new String[0];
String new_string = "";
int i = 1;
while (i < length) {
new_string = combine(new_string, string.charAt(i - 1));
if (string.charAt(i - 1) != string.charAt(i)) {
new_string = combine(new_string, string.charAt(i));
arr = AddArray(arr, new_string);
new_string = "";
i += 1;
}
if (i == length - 1) {
new_string = combine(new_string, string.charAt(i));
}
i = i + 1;
}
arr = AddArray(arr, new_string);
int arr_length = arr.length;
for (int j = 0; j < arr_length; j++) {
for (int k = 1; k < arr[j].length() - 1; k++) {
if (arr[j].charAt(k) == 'X' && arr[j].charAt(k - 1) != 'X') {
System.out.println("aaaaa");
String a = arr[j];
a = a.replace('X', arr[j].charAt(k - 1));
arr[j] = a;
}
}
}
for (int j = 0; j < arr_length; j++) {
System.out.println(arr[j]);
}
return arr;
}
public static void main(String[] args) {
String a4 = "101110";
String a1 = "1011100000000100011110000000010000000011";
String a2 = "1110XXXXXXXXXXXXXXXXXXXXXXXXXXXXX000001";
String a3 = "11111XXXXXXXXXXXXXXXXXX0XXXXXX111111111";
String[] result_arr = split(a3);
}
}