Java разбивает строку и сохраняет две части строки в массив - PullRequest
0 голосов
/ 06 июня 2018

Это некоторые данные.и я хочу разделить эти данные на две части.первый - это год (например, 913), а второй - информация об этом конкретном году.а затем я хочу сохранить эти данные в древовидной карте как пара ключ-значение.Я пытался сделать это с помощью функции разделения, но это не дает мне удовлетворительного результата.пожалуйста, проведите меня через это.Заранее спасибо.

Это мой код.

String open = "event";                                                                       
String close = "birth;
String text = "";
int start = data.indexOf(open);
if (start != -1)
{
     int end = data.indexOf(close, start + open.length());
      if (end != -1)
     {
              text = data.substring(start + open.length(), end);
               text = text.replace("==","");
            String[] words = text.split("–");
               for(String w : words)
                {
                        Log.d("trace w", w.trim());
                }
      }                                                                                                       
}


AD 70 – Emperor Alexander III dies of exhaustion while playing the game tzykanion (Byzantine name for polo). He is succeeded by his 8-year-old nephew Constantine VII.
1513 – Italian Wars: Battle of Novara. Swiss troops defeat the French under Louis II de la Trémoille, forcing the French to abandon Milan. Duke Massimiliano Sforza is restored.
1523 – Gustav Vasa, the Swedish regent, is elected King of Sweden, marking a symbolic end to the Kalmar Union. This is the Swedish national day.
1586 – Francis Drake's forces raid St. Augustine in Spanish Florida.
1644 – The Qing dynasty Manchu forces led by the Shunzhi Emperor capture Beijing during the collapse of the Ming dynasty.
1654 – Queen Christina abdicates the Swedish throne and is succeeded by her cousin Charles X Gustav.
1674 – Shivaji, founder of the Maratha Empire, is crowned.
1749 – The Conspiracy of the Slaves in Malta is discovered.
1762 – Seven Years' War: British forces begin a siege of Havana, Cuba, and temporarily capture the city in the Battle of Havana.
1808 – Napoleon's brother, Joseph Bonaparte, is crowned King of Spain.
1809 – Sweden promulgates a new Constitution, which restores political power to the Riksdag of the Estates after 20 years of enlightened absolutism. At the same time, Charles XIII is elected to succeed Gustav IV Adolf as King of Sweden.
1813 – War of 1812: Battle of Stoney Creek: A British force of 700 under John Vincent defeats an American force twice its size under William Winder and John Chandler.
1822 – Alexis St. Martin is accidentally shot in the stomach, leading to William Beaumont's studies on digestion.
1832 – The June Rebellion in Paris is put down by the National Guard.
1844 – The Young Men's Christian Association (YMCA) is founded in London.
1844 – The Glaciarium, the world's first mechanically frozen ice rink, opens.

Ответы [ 5 ]

0 голосов
/ 06 июня 2018

Я бы использовал сканер из ваших данных.

    Scanner dataInput = new Scanner(data);
    Map<String, String> dataMap = new HashMap<>();

    String input = dataInput.nextLine();
    while (!input.isEmpty()) {
        String[] spliting = input.split("(?=–)", 2);
        dataMap.put(spliting[0], spliting[1]);
        input = dataInput.nextLine();
    } 

    dataMap.forEach((k,v) -> System.out.println(k + v));

значение останется с -.

0 голосов
/ 06 июня 2018

Альтернатива Java 8:List<String> list= Stream.of(yourString.split("–")).collect(Collectors.toList());

0 голосов
/ 06 июня 2018
ArrayList<String> list= Arrays.asList(Your_String.split("delimiter"));
0 голосов
/ 06 июня 2018

Ниже приведены шаги, которые вы можете выполнить, чтобы выполнить вышеуказанное требование.

  1. Разделить строку на «-».
  2. Сохранить в древовидной коллекции.

Ниже приведен пример.

 public static void convertSplitStringIntoTreeMap() {
    List<String> listOfString = new ArrayList<String>();
    String str = "2012 - This is for testing";
    String str2 = "2013 - This is for testing2";
    listOfString.add(str);
    listOfString.add(str2);

    TreeMap<Integer, String> tmap = new TreeMap<Integer, String>();

    for (String st : listOfString) {
        String[] splitString = st.split("-");
        tmap.put(Integer.parseInt(splitString[0].trim()), splitString[1]);
    }

    System.out.println(tmap);
}
0 голосов
/ 06 июня 2018

Если ваши данные несколько постоянны в своем формате, вы можете найти первый экземпляр "-".Оттуда вы можете легко подстроковать каждую строку.

Например:

String s = "AD 70 – Emperor Al... Constantine VII.";
String y = s.substring(0, s.indexOf('–')).trim();
String info = s.substring(s.indexOf('–') + 1).trim();

Если вы делаете это рекурсивно, вы можете добавить ключ и значения в древовидную карту.

Не уверен, что это самое элегантное решение, но оно работает.

A.

...