Ich werde einen regulären Ausdruck in Java verwenden, um die Adresse vor und nach der Adresse zu teilen.
Durch Eingabe der Adresse über die Konsole wird die geteilte Adresse angezeigt. * Bitte beachten Sie, dass dies nur eine einfache ist und nicht alle Adressen vollständig geteilt werden können. </ font>
Das Verfahren ist wie folgt
Einzelheiten zu regulären Ausdrücken finden Sie auf dieser Website. https://www.sejuku.net/blog/13215
SplitAddress.java
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SplitAddress{
public static void main(String args[]) throws Exception {
System.out.println("Bitte geben Sie Ihre Adresse ein");
Scanner sc = new Scanner(System.in);
//Übergeben Sie die in der Konsole eingegebenen Zeichen als Argument an die folgende Methode.
String[] ad = split(sc.nextLine());
//Ausgabe
System.out.println(ad[0]+"\n"+ad[1]+"\n"+ad[2]);
sc.close();
}
//Methode zum Teilen der Adresse
static String[] split(String str)throws Exception {
String[] ad = new String[3];
//Vorbereitung zur Erzeugung eines Beurteilungsmusters
//Nummer halber Breite / Nummer voller Breite mindestens einmal oder chinesische Nummer mindestens einmal (am Anfang der Adresse)
String p1 = "([0-90-9]+|[1 2 3 4 5 6 7 8 9 Millionen]+)+";
//Nummer mit halber Breite / Nummer mit voller Breite ist 1 Mal oder mehr, chinesische Nummer ist 1 Mal oder mehr oder Verbindungssymbol wie Bindestrich ist 0 Mal oder mehr (Inhalt der Adresse)
String p2 = "([0-90-9]+|[1 2 3 4 5 6 7 8 9 Millionen]+|(Chome|Ding|Adresse|Wende|Problem|-|‐|- -|−|von))*";
//Nummer mit halber Breite / Nummer mit voller Breite mindestens einmal oder chinesische Nummer mindestens einmal oder Nummer/Das am Ende der Adresse verwendete Zeichen, z. B. die Nummer, ist einmal (das Ende der Adresse).
String p3 = "([0-90-9]+|[1 2 3 4 5 6 7 8 9 Millionen]+|(Chome|Ding|Adresse|Wende|Problem))";
//ex)Adresse ist 2-6-Wenn 6, ist "2" p1, "-6-"Gilt für p2 und" 6 "gilt für p3.
//Reguläre Ausdrücke
Pattern p = Pattern.compile(p1+p2+p3);
Matcher m = p.matcher(str);
//Wenn dem regulären Ausdruck eine Zeichenfolge entspricht, teilen Sie die Adresse davor und danach auf
if(m.find()) {
ad[0] = str.substring(0,m.start());
ad[1] = str.substring(m.start(),m.end());
ad[2] = str.substring(m.end(),str.length());
//40.000 3-6-Chinesische Zahlen wie 1+Verarbeitung für die Zeit der Zahlen
//(Wenn im Adressenteil der in 3 Teile unterteilten Adresse eine Zeichenfolge vorhanden ist, die dem regulären Ausdruck von 1 Kanji-Nummer + 1 Nummer entspricht, korrigieren Sie die Teilungsgrenze.)
//1 chinesische Nummer + 1 Nummer
String p4 = "[1 2 3 4 5 6 7 8 9 Millionen][0-90-9]";
p = Pattern.compile(p4);
m = p.matcher(ad[1]);
if(m.find()) {
String tmp = ad[1].substring(0,m.start());
ad[0] = ad[0] + tmp;
ad[1] = ad[1].substring(m.start(),ad[1].length());
}
//3-4-5 Zahlen wie Mitsui Building+Verarbeitung für die Zeit der chinesischen Zahlen
String p5 = "[0-90-9][1 2 3 4 5 6 7 8 9 Millionen]";
p = Pattern.compile(p5);
m = p.matcher(ad[1]);
if(m.find()) {
String tmp = ad[1].substring(m.start()+1,ad[1].length());
ad[2] = tmp + ad[2];
ad[1] = ad[1].substring(0,m.start());
}
}else ad[0] = str;
return ad;
}
}
Recommended Posts