Мне очень жаль мой английский, но в любом случае: У меня массивный, например "[arg1," start, of, text, in, quotes ", arg2]" из команды "somecommand arg1 «начало текста в кавычках». Я получаю splittted строку пробелов, но это неверно. Я хочу сделать все, что от котировок в одной позиции в массиве:Перемещение и фиксация массива
- Дано: arg1 «начало текста в кавычках» арг2
- Перед: [arg1, «начало, из, текст, в котировках», арг2]
- После: [arg1, «начало текста в кавычках», арг2]
И он должен работать не только с одной двойной кавычки. Там мой код:
public static String[] fixArguments(String[] arr) {
String[] rarr = new String[arr.length];
System.out.println("===========================");
System.out.println("fixArguments|arr:"+Arrays.toString(arr));
System.out.println("fixArguments|rarr:"+Arrays.toString(rarr));
/*for(int i=0; i<arr.length; i++) {
if(i < start) rarr[i] = arr[i];
else if(i > end) rarr[i] = arr[i-(end-start)];
else {
rarr[i] = StringUtils.join(Arrays.copyOfRange(arr, start, end), " ");
}
}*/
int start = -1;
int end = -1;
int lastnull = -1;
for(int i=0; i<arr.length; i++) {
if(rarr[i] == null && lastnull == -1) lastnull = i;
System.out.println("fixArguments|for:"+i+"|start:"+start);
System.out.println("fixArguments|for:"+i+"|end:"+end);
System.out.println("fixArguments|for:"+i+"|arr[i]:"+arr[i]);
if((arr[i].equalsIgnoreCase("\"") || arr[i].startsWith("\"")) && start == -1) start = i;
else if((arr[i].equalsIgnoreCase("\"") || arr[i].endsWith("\"")) && start != -1) {
rarr[start] = StringUtils.join(Arrays.copyOfRange(arr, start, i+start), " ");
System.out.println(Arrays.asList(arr));
System.out.println(i);
System.out.println(Arrays.asList(Arrays.copyOfRange(arr, start, i+start)));
System.out.println(arr[i]);
rarr[start] = rarr[start].substring(1, rarr[start].length()-1);
System.out.println("fixArguments|for:"+i+"|rar[start]"+rarr[start]);
start = -1;
end = i;
} else {
rarr[start+1] = arr[end+1];
System.out.println(rarr[start+1]);
lastnull = -1;
}
}
System.out.println("=================================");
return rarr;
}
У вас есть формуи. Может быть, вы можете указать пример ввода и какой будет ваш желаемый результат? Чтобы полностью понять это требование. – Kartic
Итак, учитывая массив, такой как: '[foo, bar," foo, bar "]', вы хотите получить следующий массив: '[foo, bar," foobar "]'? – npinti
Думаю, я понимаю вопрос ... Пользователь передает в командной строке следующее: arg1 «somethingA somethingB somethingC» arg2. @ alex-wells хочет получить в конце arg1, arg2 и все внутри двойных кавычек в другой переменной, но, очевидно, он получает вещи внутри двойных кавычек, разделенных в разных положениях arg. Правильно? – vianna77