2014-01-27 4 views
1

У меня возникла проблема с разбиением строки при обнаружении символа. Я знаю, как разделить строки, когда они находятся в массиве. Но я не знаю, как разбить строку, когда она передается в качестве аргумента командной строки. Это строковый аргумент, который передается, и мне нужно добавить пробелы, когда побитовое Or найдено, а также когда найдено colon. Мне нужно добавить новую строку. Я не знаю, как подойти к этой проблеме, когда она передается в качестве аргумента. Любая помощь будет потрясающей.Аргумент командной строки Java splitting

"Tassimo T46 Home Brewing System|43-0439-6|17999|0.30:Moto Precise Fit Rear"+ 
"Wiper Blade|0210919|799|0.0: Easton Stealth Reflex Composite Hockey Stick|"+ 
"83-4567-0|8999|0.5:Yardworks 4-Ton Log Splitter|60-3823-0|39999|0" 
+1

командной строки в массиве. Просьба уточнить ваш вопрос и опубликовать код, который вы пробовали до сих пор. –

ответ

1
/** 
    <P>{@code java SplitXmpl}</P> 
**/ 
public class SplitXmpl { 
    public static final void main(String[] igno_red) { 
     String sInput = "Tassimo T46 Home Brewing System|43-0439-6|17999|0.30:Moto Precise Fit Rear Wiper Blade|0210919|799|0.0: Easton Stealth Reflex Composite Hockey Stick| 83-4567-0|8999|0.5:Yardworks 4-Ton Log Splitter|60-3823-0|39999|0"; 

     String sOutput = sInput.replaceAll("\\|", " ").replaceAll(":", System.getProperty("line.separator", "\n")); 

     System.out.println(sOutput); 
    } 
} 

Выход:

[C:\java_code]java SplitXmpl 
Tassimo T46 Home Brewing System 43-0439-6 17999 0.30 
Moto Precise Fit Rear Wiper Blade 0210919 799 0.0 
Easton Stealth Reflex Composite Hockey Stick 83-4567-0 8999 0.5 
Yardworks 4-Ton Log Splitter 60-3823-0 39999 0 
0

аргументы командной строки не что иное, как массив String. Таким образом, вы можете работать с ними точно так же, как и любой другой объект String. Взгляните на String API на функциональность, которую вы пытаетесь реализовать, для вас достаточно будет использовать метод replace().

1

Другое возможное решение:

public static void main(String[] args) { 
    String s = args[0]; 
    s = s.replace("|", " ").replace(":", "\n"); 
    System.out.println(s); 
} 

Запуск с:

java Main "Tassimo T46 Home Brewing System|43-0439-6|17999|0.30:Moto Precise Fit Rear Wiper Blade|0210919|799|0.0: Easton Stealth Reflex Composite Hockey Stick| 83-4567-0|8999|0.5:Yardworks 4-Ton Log Splitter|60-3823-0|39999|0" 
0

Приведенные выше ответы верны, если выполняются следующие допущения используются

  1. вход является жесткий строка кода или
  2. Ввод, заданный в качестве аргумента командной строки, должен нет места для то он будет рассматриваться как разные argument.for например: asasa asaas assaa имеет три аргумента и asasaasaasassaa имеет только один аргумент

в первом случае вышеуказанные ответы могут работать, но во втором случае следующий фрагмент кода работает

ВХОД

Tassimo T46 Главная Brewing System | 43-0439-6 | 17999 | 0,30: Moto Precise Fit задний Щетка стеклоочистителя | 0210919 | 799 | 0,0: Easton Stealth Reflex Composite клюшка | 83-4567-0 | 8999 | 0,5: Yardworks 4-Ton Колун | 60-3823-0 | 39999 | 0

public class test { 
    public static void main(String[] args) { 
     int l=args.length; 
     StringBuilder builder=new StringBuilder(); 
     while(l-->0){ 
      builder.append(args[l]); 
     } 

     System.out.println(builder.toString().replace("|", " ").replace(":","\n")); 
    } 
} 

ВЫВОД

Splitter 60-3823-0 39999 0Log4-Ton83 -4567-0 8999 0,5 YardworksStick HockeyCompositeReflexStealthEastonBlade 0210919 799 0,0 WiperRearFitPreciseSystem 43-0439-6 17999 0,30 MotoBrewingHomeT46Tassimo аргументы

Смежные вопросы