我需要摆脱一个与文本中的male ascii symbol完全相同的角色 - ♂。但是,它不是标准的ASCII符号,因为如果我将其粘贴到StackExchange上,它将显示如下:
如何替换字符串中的字符?我已经尝试将角色直接粘贴到Eclipse中,但遗憾的是它不起作用(它看起来与粘贴到Eclipse中的图像完全相同)。但是,在使用搜索功能时,您可以在Notepad ++中看到该符号:
然而,当内联显示时,它看起来像这样:
编辑: @ 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时,角色仍然存在。
答案 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[]
数组