从String中删除ASCII符号

时间:2014-10-23 10:06:18

标签: java eclipse ascii

我需要摆脱一个与文本中的male ascii symbol完全相同的角色 - ♂。但是,它不是标准的ASCII符号,因为如果我将其粘贴到StackExchange上,它将显示如下:

enter image description here

如何替换字符串中的字符?我已经尝试将角色直接粘贴到Eclipse中,但遗憾的是它不起作用(它看起来与粘贴到Eclipse中的图像完全相同)。但是,在使用搜索功能时,您可以在Notepad ++中看到该符号:

enter image description here

然而,当内联显示时,它看起来像这样:

enter image description here

编辑: @ Greg-449的答案,我已尝试过,但该字符仍保留在字符串中。我不认为它是默认角色。我将向您展示您可以从网站上引用它的位置:

Thermaltake: Chassis > Versa > Versa H21

如果您突出显示规格&选择查看选择来源您会注意到它出现在单词(optional)后面的第63行。

如何从字符串中删除此符号?如果可能的话,是否有办法排除一般的奇怪符号?

编辑2 。在尝试了两个建议的答案之后,我仍然无法将其从字符串中删除。我现在看到的一个关键部分是我可能遗漏的是文本从网站复制到Microsoft Excel,然后复制到Java Applet(TextArea)中,在那里进行分析。操纵。即使在文本区域中不可见,但在被操作后将其复制回Excel时仍然存在。

代码测试是:

String descript = textArea.getText();
descript = descript.replace('\u000B', ' ');
textArea.setText(descript);

将此文本带回Excel时,角色仍然存在。

2 个答案:

答案 0 :(得分:4)

这是一个Unicode符号,因此要直接粘贴它,您需要使用合适的编码(如UTF-8)编辑文件,并且需要使用可以显示符号的字体。

在Java字符串中,您始终可以使用Unicode转义来表示字符。男性符号是Unicode U + 2642,因此字符串将是:

"\u2642"

更新:查看您引用的网站,该角色实际上是一个垂直标签(VT)'字符,Unicode U + 000B解释了' VT'看到'显示内联'。你可以使用

"\u000B"

为此。

使用类似

的内容
String newString = oldString.replace('\u000B', ' ');

获取一个新的字符串,其中VT由空格替换。

答案 1 :(得分:1)

VT(“垂直制表符”)字符实际上是ASCII字符11或0x0b。因此,某些工具似乎只是以非标准(ASCII或Unicode)方式显示此字符。

知道您正在寻找ASCII码11,您可以char maleChar = (char)11;String maleStr = "" + ((char)11);然后根据它进行替换操作。

如果,otoh,您的字符串中的数据是例如从流中读取的实际二进制数据,那么您最好先使用byte[]int[]数组