谢谢回答哦. 不过.有个问题哦.比如9位的010010000 String a = "010010000"; if(a.substring(6,9).equals("000")){ a = a.substring(0,6); } if(a.substring(4,6).equals("00")){ a = a.substring(0,4); } if(a.substring(2,4).equals("00")){ a = a.substring(0,2); } 我4-6的判断就应该终止了.......怎么处理才好?
public class TestString { public static void main(String args[]){ String a = "010010000"; String[] s = new String[]{"00","00","000"} ; for(int i=3;i>0;i--){ if(a.substring(a.length()-i,a.length()).equals(s[i-1])){ a = a.substring(0,a.length()-i); } } System.out.println(a); } }
class test { public static void main(String[]srga) { String str = "010010000"; int length = 0;
class Test {public static void main(String args[]) { String a = "010000100"; if(a.substring(6,9).equals("000")){ a = a.substring(0,6); if(a.substring(4,6).equals("00")){ a = a.substring(0,4); if(a.substring(2,4).equals("00")){ a = a.substring(0,2); }} } System.out.println(a); } }
小弟有个思路 用一个可变字符串 存放结果 不是从后向前3位截取么??肯定有余数(可能是0) 可以先处理余数,剩下的不就是3的倍数了么?? 然后在把子串从前向后取 该怎么办怎么办 不知道怎么样 public class Str { public Str() { } public static void main(String[] args) { String s = "010010000"; StringBuffer ss = new StringBuffer(); if (s.length() % 3 == 2) { if (!"00".equals(s.substring(0, 2))) { ss.append(s.substring(0, 2)); } String y = s.substring(2, s.length()); for (int i = 0; i < s.length() / 3; i++) { if (!"000".equals(y.substring(3*i, 3*i+3))) { ss.append(y.substring(3*i, 3*i+3)); } } } else if (s.length() % 3 == 1) { if (!"0".equals(s.charAt(0))) { ss.append(s.charAt(0)); } String y = s.substring(1, s.length()); for (int i = 0; i < s.length() / 3; i++) { if (!"000".equals(y.substring(3*i, 3*i+3))) { ss.append(y.substring(3*i, 3*i+3)); } } } else { for (int i = 0; i <s.length() / 3; i++) { if (!"000".equals(s.substring(3*i, 3*i+3))) { ss.append(s.substring(3*i, 3*i+3)); } } } System.out.println(ss); } }稍微复杂了一点 由于本人基础暴差 所以写的繁琐了一点 那个for循环应该可以提个方法出来
用一个while()循环,一直循环直到长度小于3或者找到不是3位或者两位都.每次都取最后三位嘛,如果取到的不是三进而取两个0的呀 str; boolean flag = true; while( str.length >= 3 && flag) { if( "000".equeal(str.substring(str.length-3,str.length)) ) str=str.substring(0,str.length-3); else if ("00".equeal(str.substring(str.length-2,str.length)) ) { str=str.substring(0,str.length-2); flag = false; } else { flag = false; } } 没有经过测试的,在取最后三位或者两们的地方可能有点问题,道理应该是说到了
if(a.substring(6, 9).equals("000")){
//但是怎么删除这3个0哦?
}
------------------------
一定要这样反复判断么?没有效率更好的方法么?
a=a.substring(0,6);
}
不过.有个问题哦.比如9位的010010000
String a = "010010000";
if(a.substring(6,9).equals("000")){
a = a.substring(0,6);
}
if(a.substring(4,6).equals("00")){
a = a.substring(0,4);
}
if(a.substring(2,4).equals("00")){
a = a.substring(0,2);
}
我4-6的判断就应该终止了.......怎么处理才好?
public static void main(String args[]){
String a = "010010000";
String[] s = new String[]{"00","00","000"} ;
for(int i=3;i>0;i--){
if(a.substring(a.length()-i,a.length()).equals(s[i-1])){
a = a.substring(0,a.length()-i);
}
}
System.out.println(a);
}
}
{
public static void main(String[]srga)
{
String str = "010010000";
int length = 0;
while(true)
{
length = str.length();
if(str.substring(length-3,length).equals("000"))
{
str = str.substring(0,length-3);
}
else
{
break;
}
}
System.out.println(str);
}
}
class bbb
{
public static void main(String[]srga)
{
String str = "011000000";
while(true)
{
int length = str.length();
if(str.substring(length-3,length).equals("000"))
{
str = str.substring(0,length-3);
}
else
{
break;
}
length = str.length();
if(str.substring(length-2,length).equals("00"))
{
str = str.substring(0,length-2);
}
else
{
break;
}
length = str.length();
if(str.substring(length-2,length).equals("00"))
{
str = str.substring(0,length-2);
}
else
{
break;
}
}
System.out.println(str);
}
--------------------
这个倒是好用,但是有没有更好的方法啊?
public class TestString {
public static void main(String args[]){
String a = "010010000";
String[] s = new String[]{"00","00","000"} ;
for(int i=3;i>0;i--){
if(a.substring(a.length()-i,a.length()).equals(s[i-1])){
a = a.substring(0,a.length()-i);
}
}
System.out.println(a);
}
}
-----------------------------
想来想去,觉得这样不行.谢谢回复.感谢!
String s = "0100000000";
System.out.println(getTrimZero(s));
}
public static String getTrimZero(String s) {
if (s.matches("^0+$")) {
return "";
}
return s.replaceAll("^(\\d+?)(000)+$", "$1");
}
String s2 = s.replaceAll("(000)*$","");
System.out.println(s2);
public static void main(String[] args){
String str="01001";
//尾数为0个数
int count=0;
//删除0的个数
int delCount=0;
for(int i=str.length()-1;i>=0;i--){
if(str.charAt(i)=='0')
count++;
else
break;
}
delCount=count/3*3+((count+1)/3-(count)/3)*2;
// System.out.println(delCount);
System.out.print(str.substring(0,str.length()-delCount));
}
}
{public static void main(String args[])
{
String a = "010000100";
if(a.substring(6,9).equals("000")){
a = a.substring(0,6);
if(a.substring(4,6).equals("00")){
a = a.substring(0,4);
if(a.substring(2,4).equals("00")){
a = a.substring(0,2);
}} }
System.out.println(a);
}
}
用一个可变字符串 存放结果
不是从后向前3位截取么??肯定有余数(可能是0)
可以先处理余数,剩下的不就是3的倍数了么??
然后在把子串从前向后取 该怎么办怎么办
不知道怎么样
public class Str
{
public Str()
{
} public static void main(String[] args)
{
String s = "010010000";
StringBuffer ss = new StringBuffer();
if (s.length() % 3 == 2)
{
if (!"00".equals(s.substring(0, 2)))
{
ss.append(s.substring(0, 2));
}
String y = s.substring(2, s.length());
for (int i = 0; i < s.length() / 3; i++)
{
if (!"000".equals(y.substring(3*i, 3*i+3)))
{
ss.append(y.substring(3*i, 3*i+3));
}
} }
else if (s.length() % 3 == 1)
{
if (!"0".equals(s.charAt(0)))
{
ss.append(s.charAt(0));
}
String y = s.substring(1, s.length());
for (int i = 0; i < s.length() / 3; i++)
{
if (!"000".equals(y.substring(3*i, 3*i+3)))
{
ss.append(y.substring(3*i, 3*i+3));
}
}
}
else
{
for (int i = 0; i <s.length() / 3; i++)
{
if (!"000".equals(s.substring(3*i, 3*i+3)))
{
ss.append(s.substring(3*i, 3*i+3));
}
} }
System.out.println(ss);
}
}稍微复杂了一点 由于本人基础暴差 所以写的繁琐了一点
那个for循环应该可以提个方法出来
str;
boolean flag = true;
while( str.length >= 3 && flag)
{
if( "000".equeal(str.substring(str.length-3,str.length)) )
str=str.substring(0,str.length-3);
else if ("00".equeal(str.substring(str.length-2,str.length)) )
{
str=str.substring(0,str.length-2);
flag = false;
}
else
{
flag = false;
}
}
没有经过测试的,在取最后三位或者两们的地方可能有点问题,道理应该是说到了
为什么第一个for循环不会执行?
import java.util.*;public class Solution
{
public static void main(String[] args)
{
String s="01000000000";
char[] c1=s.toCharArray();
int count=0;
for(int i=c1.length;i!=-1;i++)
{
if(c1[i]==(char)0) {
count++;
System.out.println("count++");//用于测试
}
else
break;
}
char[] c2=new char[c1.length-count];
System.arraycopy(c1,0,c2,0,c2.length);
//for(int i=0;i<c2.length;i++)
//System.out.print(c2[i]);
}
}
public class TestString{
public static void main(String[] args){
String str="01001000000";
//尾数为0个数
int count=0;
for(int i=str.length()-1;i>=0;i--){
if(str.charAt(i)=='0')
count++;
else
break;
}
if(count%3==1)
System.out.print(str.substring(0,str.length()-count+1));
else
System.out.print(str.substring(0,str.length()-count));
}
}
public String cutString(String paramStr){
int index = -1;
int length = paramStr.length();
for(int i = length - 1; i >= 0; i--){
if(paramStr.charAt(i) != '0'){
index = i;
break;
}
}
if(index == -1){
return "";
}
return paramStr.substring(0,length - (length - 1 - index) / 3 * 3);
}
public static void main(String[] args){
Test test = new Test();
System.out.println(test.cutString("00000001000"));
}
}
int index = -1;
int length = paramStr.length();
for(int i = length - 1; i >= 0; i--){
if(paramStr.charAt(i) != '0'){
index = i;
break;
}
}
if(index == -1) return "";
return paramStr.substring(0,length - (length - 1 - index) / 3 * 3);
}