java - 如何让 Java split 处理西里尔字母字符串

标签 java split

我有以下情况:

  1. 从数据库中读取包含西里尔字母的字段。

    String title = (String)dbTable.getAttribute("title");
    
  2. 在 JSP 页面中显示此标题 - 如果标题包含超过 10 个单词,则仅显示前 10 个单词,否则显示完整标题。

完整标题显示良好。

为了从标题中获取 10 个单词,我使用了代码:

      String t1 = (String)dbTable.getAttribute("title");
      String t2 = t1.split("\\w", 11);
      title = t2[10];

但是得到了奇怪的结果 - 显然我错过了有关方法拆分的一些内容。

例如

t1 = "Внасяне от осигурителя на осигурителните вноски за държавното обществено осигуряване и допълнително задължително пенсионно осигуряване върху начислени, но неизплатени възнаграждения или върху неначислени възнаграждения, отнасящи се за труд, положен през месец Март 2012 г. (първият работен ден след 30 Април 2012 г. е 02 Май 2012 г.)";
t2 returns "г. е 02 Май 2012 г.) "

这不是我想要的结果。

我试图查看 t2[0] 、 t2[1] 等中的内容 - 但也没有得到预期的结果 - 在 t2[0] 中,我从该字符串的开头得到了前 5 个单词 - 不仅仅是第一个字。

问题是我在分割方面做错了什么,或者如何让分割在西里尔字母字符串上工作,或者请建议一些解决方法。

最佳答案

我不会在这里使用正则表达式。对于极其简单的解析,手动执行比使用正则表达式执行要快(并且在本例中简单得多)。

public class FirstTenTest {
  public static void main (String... args) {
    String myString = "Внасяне от осигурителя на осигурителните вноски за държавното обществено осигуряване и допълнително задължително пенсионно осигуряване върху начислени, но неизплатени възнаграждения или върху неначислени възнаграждения, отнасящи се за труд, положен през месец Март 2012 г. (първият работен ден след 30 Април 2012 г. е 02 Май 2012 г.)";

    System.out.println(firstTenWords(myString));
  }

  public static String firstTenWords(String input) {
    StringBuilder sb = new StringBuilder();
    int spaceCount = 0;
    for(char c : input.toCharArray()) {
      if (c == ' ') spaceCount++;
      if (spaceCount == 10) break;
      sb.append(c);
    }
    return sb.toString();
  } 
}

输出:

Внасяне от осигурителя на осигурителните вноски за държавното обществено осигуряване

关于java - 如何让 Java split 处理西里尔字母字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16279372/

相关文章:

java - Scala:从字节码角度创建公共(public)非最终类字段

Java-在while循环中递减变量并打印列表

php - 如何从字符串中提取数字并将其添加到数组?

c# - String.Split 能否区分 char 的单个实例和多个实例?

java - 2-3 树 - split 困难

Java字符串替换 "with\"

java - 按字符拆分字符串

c++ - rdbuf 对比 getline 对比 ">>"

sql - 在 SQL Server 2012 上按空格拆分文本

java - 我可以使用 Java 小程序违反同源策略吗?