как отделить двойные значения от строки в Java - PullRequest
0 голосов
/ 16 октября 2018
public class SplitTest { 
    public static void main(String args[]) 
    { 
        String str = "32.85k"; 
        String[] arrOfStr = str.split("k", 10); 

        for (String a : arrOfStr) 
            System.out.println(a); 
    } 
} 

мой вывод 32.85K, и мне нужно, чтобы 32.85 и 'k' отделялись

Ответы [ 4 ]

0 голосов
/ 16 октября 2018

Если вы уверены, что строка имеет шаблон number dot number K, вы можете просто использовать replace метод

String str = "32.85k"; 
String str2 = str.replace("k",""); // will return "32.85"
0 голосов
/ 16 октября 2018

Вы можете использовать этот код регулярного выражения для достижения,

public static void main(String[] args) throws IOException {
        String str = "32.85k";
        Pattern p = Pattern.compile("(\\d+\\.\\d+)([a-zA-Z]+)");
        Matcher m = p.matcher(str);
        if (m.matches()) {
            System.out.println(m.group(1));
            System.out.println(m.group(2));
        }
    }
0 голосов
/ 16 октября 2018

Если вы знаете, что строка будет длиной в один символ, вы можете использовать подстроку (0, длина-1) для двойного и подстроку (длина -1, длина) для строки.

Если вы не знаете размер строки, вам придется использовать Regex.

Matcher m = Pattern.compile("(\\d+\\.\\d+)(\.)")
while(m.find()){ 
    double d = Double.parseDouble(m.group(1));
    String unity = m.group(2);
}
0 голосов
/ 16 октября 2018

Один из вариантов - разделить, используя следующие обходные пути:

(?<=\d)(?=[A-Za-z])

Это говорит о разделении в любой точке строки, где то, что предшествует , является цифрой, а то, что следует - это строчная / заглавная буква.

String str = "32.85k"; 
String[] arrOfStr = str.split("(?<=\\d)(?=[A-Za-z])");

for (String a : arrOfStr)  {
    System.out.println(a); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...