Je vais utiliser une expression régulière en java pour diviser l'adresse avant et après l'adresse.
En entrant l'adresse depuis la console, l'adresse partagée sera affichée. * Veuillez noter que ce n'est qu'une simplification et que toutes les adresses ne peuvent pas être complètement divisées. </ font>
La procédure est la suivante
Pour plus de détails sur les expressions régulières, consultez ce site. 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("Veuillez entrer votre adresse");
Scanner sc = new Scanner(System.in);
//Passez les caractères saisis dans la console à la méthode suivante comme argument.
String[] ad = split(sc.nextLine());
//Production
System.out.println(ad[0]+"\n"+ad[1]+"\n"+ad[2]);
sc.close();
}
//Méthode pour diviser l'adresse
static String[] split(String str)throws Exception {
String[] ad = new String[3];
//Préparation à la génération du modèle de jugement
//Nombre demi-largeur / nombre pleine largeur au moins une fois ou nombre chinois au moins une fois (au début de l'adresse)
String p1 = "([0-90-9]+|[1 2 3 4 5 6 7 8 9 millions]+)+";
//Le nombre demi-largeur / le nombre pleine largeur est 1 ou plus, le nombre chinois est 1 ou plus, ou le symbole de connexion tel que le trait d'union est 0 ou plus (contenu de l'adresse)
String p2 = "([0-90-9]+|[1 2 3 4 5 6 7 8 9 millions]+|(Chome|Ding|adresse|Tour|problème|-|‐|-|−|de))*";
//Nombre demi-largeur / nombre pleine largeur au moins une fois ou nombre chinois au moins une fois ou nombre/Le caractère utilisé à la fin de l'adresse tel que le nombre est une fois (fin de l'adresse)
String p3 = "([0-90-9]+|[1 2 3 4 5 6 7 8 9 millions]+|(Chome|Ding|adresse|Tour|problème))";
//ex)L'adresse est 2-6-Si 6, "2" est p1, "-6-"S'applique à p2 et" 6 "s'applique à p3.
//Expressions régulières
Pattern p = Pattern.compile(p1+p2+p3);
Matcher m = p.matcher(str);
//S'il existe une chaîne de caractères correspondant à l'expression régulière, divisez l'adresse avant et après
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-Chiffres chinois comme 1+Traitement pour le temps des nombres
//(S'il y a une chaîne de caractères correspondant à l'expression régulière de 1 nombre kanji + 1 nombre dans la partie adresse de l'adresse divisée en 3 parties, la limite de division est corrigée.)
//1 numéro chinois + 1 chiffre
String p4 = "[1 2 3 4 5 6 7 8 9 millions][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 numéros comme le bâtiment Mitsui+Traitement pour le temps des nombres chinois
String p5 = "[0-90-9][1 2 3 4 5 6 7 8 9 millions]";
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;
}
}