簡體   English   中英

使用拆分的字符串文本解析

[英]String text parse using split

我有一個形式為(name.surname/city name2.surname2.city2 [...])的字符串。 我已經創建了人 class 和構造函數加上重寫方法 toString() 應該返回姓名、姓氏和城市。

從主要的 class 開始,我使用相關正則表達式“[./ ]+”的拆分創建了一個新的 String[]。 然后我使用該長度/3 創建了一個 personArray。

在運行時我需要有以下 output:

name surname city
name2 surname2 city2
[...]

或者

Name is name, Surname is surname, City is city1
Name is name2, Surname is surname2, City is city2
[...]

無法擁有預期的 output。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String text = new String("John.Wick/Budapest Michael.Bolton/Manchester Ivan.Perisic/Zagreb Vladimir.Putin/Moscow");
        String[] textArray = text.split("[./ ]+");
        Person [] personArray = new Person[textArray.length/3];

        for (String s : textArray)
            for (int i = 0; i < textArray.length; i+=3) {
                System.out.print(s);
            }
       //show person data
       for(Person person : personArray){
          System.out.println(person);
        }
    }
}

人 class

public class Person {
    private final String surname;
    private final String name;
    private final String city;

    public Person(String surname, String name, String city) {
        this.surname = surname;
        this.name = name;
        this.city = city;
    }
    @Override
    public String toString() {
        return "Surname = "+ surname + " " +
                "Name = " + name + " " +
                "City = " + city + " ";
    }
}

===============

由於您從未在personArray中添加任何內容,因此您的 output 是正確的。

現在對於每個盒子,您需要用正確的字符串實例化一個Person ,為此使用他們的 position

String text = "John.Wick/Budapest Michael.Bolton/Manchester Ivan.Perisic/Zagreb Vladimir.Putin/Moscow";
String[] textArray = text.split("[./ ]+");
Person[] personArray = new Person[textArray.length / 3];

for (int i = 0; i < personArray.length; i++) {
    personArray[i] = new Person(textArray[i * 3], textArray[i * 3 + 1], textArray[i * 3 + 2]);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM