如何在字符串

时间:2016-10-17 19:40:08

标签: java regex unicode

这里的第一篇文章/问题,首先感谢这个社区多年来一直是我的头号java资源(作为读者)。几乎没有什么我能在这里找到解决方案,直到这个。

所以,我得到了一个文件,我需要从中检索一些文本,我打开如下:

BufferedReader openFile = new BufferedReader(new InputStreamReader(new FileInputStream(getPath), "UTF-8"));

我使用的是一个非常简单的正则表达式模式:

Pattern getAnalyte = Pattern.compile("^(\\S+),"); 

此模式在我的场景中按预期工作,它偶尔会匹配包含非拉丁字符的字符串,通常是希腊语。到目前为止没问题。

当我需要在字符串中存储匹配的内容时,会出现问题。如果在其中有非拉丁字符,它将无法工作:

  • 我无法在控制台和各种Swing组件(例如jComboBox)中正确打印它,我在其中传输匹配的内容。它将仅显示匹配内容的每个非拉丁字符的1平方。
  • 它始终无法与从另一个源存储的完全相同的字符串进行equals()比较,例如来自Swing jTable单元格。

我尝试以下列所有形式存储正则表达式匹配的内容:

String getNameTry1 = getMatch1.group(1);
String getNameTry2 = new String(getMatch1.group(1).getBytes("UTF-8"));
String getNameTry3 = new String(getMatch1.group(1).getBytes(), "UTF-8");

没有人会工作,我总是从上面的任何一个字符串打印出来的胡言乱语 如果所有角色都是拉丁语(和数字),那么一切当然都很棒并且符合预期。 我已经没有想法了 - 我错过了什么,或者根本不应该工作?

非常感谢提前!

编辑2016年12月15日:我不是故意在一个月之后无耻地提出我的问题+之后,虽然好......这就是我想要做的事情,所以如果不是这样,请接受我的借口可以接受的。无论如何我只会做一次。 非常感谢你的再次关注,请至少让我知道,如果出于某种原因,这是一个糟糕的问题,以便我放弃坚持。虽然任何人都可能遇到......但它看起来很普遍。

0 个答案:

没有答案