java如何拆分混合的语言字符串

时间:2019-12-28 11:53:14

标签: java android

我有一个字符串。 (输入的字符串始终是英语句子,并且它的翻译是另一种语言。但是在一行中没有限制,非常感谢。)

String str = "2019雨降るしですね。It rains 2019."; 

如何将其分为两个?

2019雨降るしですね。

It rains 2019.

我尝试过,但是失败了。

                String aString = "2019/1/1,なにげない日々。2019/1/1 is a simple day.";
                Pattern pat = Pattern.compile("([\\p{InHiragana}]+)"); 
                Matcher m = pat.matcher(aString);
                System.out.println(m.find()); // true
                String firstHour = m.group(0);
                System.out.println(firstHour);      

2 个答案:

答案 0 :(得分:0)

对于未设置\W的字符,可以选择

[a-zA-Z_0-9]

第一种情况的快速解决方案:(\\d{4})(\\W+)(\\s*)(.*)

答案 1 :(得分:0)

我建议您改为尝试改善接收数据的格式,因为此问题无法100%准确地解决。话虽如此,这是一种适用于大多数情况的方法:

  1. 将字符串分割成单词(例如.split(" ")
  2. 对于数组中的第一项:
    1. Check if word is all English letters(如果全部为数字,请移至下一个单词)。
    2. 存储此值。
  3. 对于数组中的所有其他项:
    1. 检查单词是否全为英文字母。
    2. 如果是,并且前一个单词是非英语字母,那么您就有了断点。
  4. Merge back together断点两侧的前X个字和后X个字。

您现在将有2个字符串。一种搭配您的非英语字符串,另一种搭配您的英语字符串。您将必须进行大量测试,并可能会改善对数字的处理方式(使用正则表达式将数字分割吗?),但这是一个开始。