我有一个包含日语和数字字符的日语字符串,.i希望根据字符串中数字字符的第一次出现来拆分该字符串。例如,
String value = "上目黒1丁目2-3";
after split
value1 = "上目黒;
value2 = "1丁目2-3"; 对于英文字符串,我可以使用下面的代码来实现这一点。
String s = "abc1w2";
Matcher matcher = Pattern.compile("([^\\d]+)(.*)").matcher(s);
if (matcher.matches()) {
System.out.println(matcher.group(1).trim());
System.out.println("sep");
System.out.println(matcher.group(2)); 但是它不适用于日本的characters.Please帮助
发布于 2016-11-09 14:54:32
您可以对Pattern.UNICODE_CHARACTER_CLASS标志使用自己的方法,这将使\d Unicode知道:Matcher matcher = Pattern.compile("([^\\d]+)(.*)", Pattern.UNICODE_CHARACTER_CLASS).matcher(s);。见Java演示。
但是,您可以使用简单的split
String value = "上目黒1丁目2-3";
String[] res = value.split("(?U)(?=\\d)", 2);
System.out.println(Arrays.toString(res));.split("(?U)(?=\\d)", 2)将您的字符串分成两个部分(参见2参数)和(?=\d) Unicode识别模式(请参见(?U),一个Pattern.UNICODE_CHARACTER_CLASS嵌入式标志选项),在数字之前匹配一个位置( (?=....)是一种只检查向右的模式的正前瞻,但不消耗该字符串,因为它是零宽度的分配)。
https://stackoverflow.com/questions/40509786
复制相似问题