formatAddress function
dynamic
formatAddress(
- String address
)
Implementation
formatAddress(String address) {
RegExp buildingNumberRegx = RegExp(r'\d+.*?\d+(?=号)'); // or (\d+-)?\d+(?=号)
RegExp addressRegex = RegExp('[^\\x00-\\x7F]+');
Iterable<Match> matches = buildingNumberRegx.allMatches(address);
List<String> matchingStrings = [];
List<String> nonMatchingStrings = [];
for (Match match in matches) {
String matchedPart = match.group(0)!;
matchingStrings.add(matchedPart);
}
addressRegex.allMatches(address).forEach((match) {
nonMatchingStrings.add(match.group(0)!);
});
if (matchingStrings.isNotEmpty) {
return {
"address": nonMatchingStrings.isNotEmpty ? nonMatchingStrings[0] : '',
"building": matchingStrings.join(""),
};
} else {
RegExp englishRegex = RegExp(r'[a-zA-Z0-9.-]+');
RegExp japaneseRegex = RegExp('[^\\x00-\\x7F]+');
List<String> englishStrings = [];
List<String> japaneseStrings = [];
englishRegex.allMatches(address).forEach((match) {
englishStrings.add(match.group(0)!);
});
japaneseRegex.allMatches(address).forEach((match) {
japaneseStrings.add(match.group(0)!);
});
return {
"address": japaneseStrings.isNotEmpty ? japaneseStrings[0] : '',
"building": englishStrings.join(""),
};
}
}