2015-09-28 2 views
0

Я хочу сохранить только числа и одну десятичную строку из строки, но не нашел случая, когда может храниться только одно десятичное число. Коды я видел, был подобен этомуСохранение только одной десятичной строки в строке

String str="12.2.3.4"; 
String a=str.replaceAll("[^\\d.]", ""); 
System.out.println(a); 

Что я могу сделать, чтобы сохранить только один десятичный и удалить other.I хотите, чтобы получить выход в этом виде

12.234 

ответ

2

Вот еще один способ сделать это с StringBuilder:

StringBuilder sb = new StringBuilder("12.2.3.4"); 

int firstPosition = sb.indexOf("."); 

for (int lastPosition = sb.lastIndexOf("."); 
     lastPosition > firstPosition; 
     lastPosition = sb.lastIndexOf(".", lastPosition)) { 
    sb.deleteCharAt(lastPosition); 
} 

String result = sb.toString(); 

В основном это выглядит для всех . случаев, начиная с правой и собирается влево, пока они не первый . и удаляет каждый из них.

Если есть только одно десятичное или вообще нет, условие цикла будет ложным с самого начала, поэтому никаких изменений не будет.

1
StringBuilder sb = new StringBulder(); 
String[] as = str.split("\\."); 
sb.append(as[0]); 
if(as.length > 1) { 
    sb.append("."); 
} 
for(int i = 1; i < as.length; i ++) { 
    sb.append(as[i]); 
} 
return sb.toString(); 
+0

Правильно отредактирован. @ControlAltDel –

1

Вы могли бы это сделать старинке

public String formatOneDecimalPoint(String str) { 
    StringBuilder sb = new StringBuilder(); 
    boolean foundPoint = false; 
    for (int i = 0; i < str.length(); i++) { 
    if (str.charAt(i) != '.') { 
     sb.append(str.charAt(i)); 
    } else if (!foundPoint) { 
     sb.append(str.charAt(i)); 
     foundPoint = true; 
    } 
    } 
    return sb.toString(); 
} 
1

Вы можете сделать это таким образом, используя String#split и StringBuilder

public class OneDecimalString { 
    public static void main(String args[]) { 
     StringBuilder sb = new StringBuilder(); 
     String str = "12.2.3.4"; 
     String a[] = str.split("\\."); 
     for (int i = 0; i < a.length; i++) { 
      sb.append(a[i]); 
      if (i == 0) { 
       sb.append("."); 
      } 
     } 
     System.out.println("Output: " + sb.toString()); 
    } 
} 
Смежные вопросы