<java> Teilen Sie die Adresse vor und nach der Adresse mit einem regulären Ausdruck

Überblick

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>

Verfahren

Das Verfahren ist wie folgt

  1. Kompilieren Sie einen regulären Ausdruck mit der Pattern-Klasse (java.util.regex.Pattern).
  2. Überprüfen Sie, ob die von der find-Methode der Matcher-Klasse (java.util.regex.Matcher) eingegebene Zeichenfolge mit dem regulären Ausdruck übereinstimmt.
  3. Wenn es eine Übereinstimmung gibt, werden die Zeichen aufgeteilt und angezeigt.

Einzelheiten zu regulären Ausdrücken finden Sie auf dieser Website. https://www.sejuku.net/blog/13215

Code

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;
	}
}

Ausführungsergebnis

Die in grünen Buchstaben eingegebene Adresse und die unteren drei Zeilen sind die geteilten Adressen.

image.png

Probieren Sie es aus! !! </ font>

Recommended Posts