首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在数字字符第一次出现的基础上拆分日语字符串?

如何在数字字符第一次出现的基础上拆分日语字符串?
EN

Stack Overflow用户
提问于 2016-11-09 14:51:09
回答 1查看 430关注 0票数 1

我有一个包含日语和数字字符的日语字符串,.i希望根据字符串中数字字符的第一次出现来拆分该字符串。例如,

代码语言:javascript
复制
String value = "上目黒1丁目2-3"; 
after split
value1 = "上目黒; 
value2 = "1丁目2-3"; 

对于英文字符串,我可以使用下面的代码来实现这一点。

代码语言:javascript
复制
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帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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

代码语言:javascript
复制
String value = "上目黒1丁目2-3";
String[] res = value.split("(?U)(?=\\d)", 2);
System.out.println(Arrays.toString(res));

Java演示

.split("(?U)(?=\\d)", 2)将您的字符串分成两个部分(参见2参数)和(?=\d) Unicode识别模式(请参见(?U),一个Pattern.UNICODE_CHARACTER_CLASS嵌入式标志选项),在数字之前匹配一个位置( (?=....)是一种只检查向右的模式的正前瞻,但不消耗该字符串,因为它是零宽度的分配)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40509786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档