从后往前截 第一个出现非0的字符为止
比如:string str = "440103000000" 我想得到 “440103”
怎么实现呀
[code="java"]
String str = "440103000000";
System.out.print(str.replaceAll("0*$", ""));
[/code]
字符串转化成Char数组,从尾部开始遍历,将0到index的字符Copy到Str中。
[code="java"]
String str = "32180321032130123120032100030110000";
for(int i=str.length()-1;i>=0;i--){
if( str.charAt(i) !='0'){
str = str.substring(0,i+1);
break;
}
}
[/code]
还可以使用正则表达式取出0前面的数据
String str = "0000321803210321300000123120032100030110000";
String regex = "([1-9]*0*[1-9]+)+";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
boolean found = false;
while (matcher.find())
{
System.out.printf(
"I found the text \"%s\" starting at index %d and ending at index %d.%n",
matcher.group(), matcher.start(), matcher.end());
found = true;
}
if (!found)
{
System.out.printf("No match found.%n");
}
用common的stringUtils的一个方法就可以,名字忘了,提示一下看看
使用apache commons-lang包提供的StringUtils.strip()方法,示例:
[code="java"]
import org.apache.commons.lang.StringUtils;
public class TestMain {
public static void main(String[] args) {
String str = "011110023340000";
System.out.println(StringUtils.strip(str, "0"));
// output: 1111002334
}
}
[/code]
不考虑效率可以这么做
String str = "440103000000";
while(str.endsWith("0")){
str = str.substring(0,str.length()-1);
}
用substring(x,x)的方法进行 参考API
之前没有看清题意,不好意思。
可以使用apache commons-lang包提供的StringUtils.stripEnd()方法,示例:
[code="java"]
import org.apache.commons.lang.StringUtils;
public class MainTest {
public static void main(String[] args) {
String str = "00111220000";
System.out.println(StringUtils.stripEnd(str, "0"));
//output: 0011122
}
}
[/code]
对应的sourcecode:
[code="java"]
public static String stripEnd(String str, String stripChars) {
if (str == null) {
return null;
}
int end = str.length();
if (end == 0) {
return str;
}
if (stripChars == null) {
while ((end != 0) && Character.isWhitespace(str.charAt(end - 1))) {
end--;
}
} else if (stripChars.length() == 0) {
return str;
} else {
while ((end != 0) && (stripChars.indexOf(str.charAt(end - 1)) != -1)) {
end--;
}
}
return str.substring(0, end);
}
[/code]
int len = str.length();
for(int i = len - 1; i > 0; i--) {
char c = str.charAt(i);
if(c != '0') {
str.substring(0, i + 1);
break;
}
}
从后往前搜索!
看了一下回复,我觉得这个比较简单:String newString = string.substring(0,str.length()-6);减去后6位String