Как отформатировать строку с разделителями через запятую

#java #python #jenkins-groovy #groovy-console #groovy-eclipse

Вопрос:

пожалуйста, найдите изображение, которое у меня есть строка вроде этого : Здравствуйте,1,2 Мира,6,дом 7,10,11 я хочу, чтобы мой выход, как : Привет, Мир дому 1 6 10 2 7 11 ниже мой код: деф а = «Привет,1,2 Мира,6,дом 7,10,11″; а=а.заменить(‘,’,»п») запросы(а)

Комментарии:

1. Пожалуйста, правильно отформатируйте свой код (подсказка: используйте {} кнопку). Скриншоты кода не могут быть приняты при переполнении стека. Затем исправьте очевидную синтаксическую ошибку.

2. Что вы пробовали до сих пор? Есть ли какая-то конкретная проблема, с которой вы столкнулись? Подсказка: Разбейте строку на массив с помощью array = a.split(","); , затем проверьте, какие из них являются числами, и отсортируйте их соответственно.

Ответ №1:

Вы можете просто сделать string.split(',') , чтобы получить список, и ' '.join(string.split(',')) получить строку из всех этих элементов, разделенных точкой ' ' . Это очень простое разделение, для более сложного синтаксического анализа используйте csv модуль.

Этот ответ предназначен для Python. Я не знаю, почему у вас есть и java то, и python другое в качестве тегов.

Ответ №2:

Вы не можете сгенерировать этот вывод логически, так как нет (очевидного) способа определить порядок целых чисел.

Однако, если вы просто хотите изолировать слова и целые числа, а затем соединить их вместе в том порядке, в котором они были определены, это можно сделать.

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

 import re

d = 'Hello,1,2 World,6,7 Home,10,11'
w = ''
n = ''
for token in re.split(',| ', d):
    try:
        int(token)
        n  = token   ' '
    except ValueError:
        w  = token   ' '

print(w   n.rstrip())
 

Результатом этого будет: Привет, Мир, Дом 1 2 6 7 10 11

Комментарии:

1. Обратите внимание, что вы можете сделать это логически, попытавшись разобрать строки на целые числа и просто добавить/переместить допустимые целые числа в конец массива.

2. Пожалуйста, просмотрите исходный вопрос в отношении требований к входным данным и выходным данным и обратите внимание, что целочисленные маркеры отображаются в выходных данных в порядке, отличном от входного

Ответ №3:

 public static void main(String[] args) {
    String a = "Hello,1,2 World,6,7 Home,10,11";
    
    StringBuffer sb1 = new StringBuffer();
    StringBuffer sb2 = new StringBuffer();
    StringBuffer sb3 = new StringBuffer();
    String[] ar = a.split(",");
    for (int i = 0; i < ar.length; i  ) {
        if(ar[i].contains(" ") amp;amp; isNumeric(ar[i].split(" ")[0])){
            sb1.append(ar[i].split(" ")[0] " ");
            sb2.append(ar[i].split(" ")[1] " ");
        } else if(isNumeric(ar[i])){
            sb3.append(ar[i] " ");
        } else{
            sb2.append(ar[i] " ");
        }
    }
    System.out.println(sb2 "" sb3 "" sb1);
}

public static boolean isNumeric(String strNum) {
    if (strNum == null) {
        return false;
    }
    try {
        double i = Integer.parseInt(strNum);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}
 

ты должен попробовать это.