【问题标题】:Java using group separator as delimiterJava 使用组分隔符作为分隔符
【发布时间】:2019-01-22 14:17:32
【问题描述】:

我有一个需要使用组分隔符分隔的字符串,即十六进制的“0x1E”。

例子:

String notFinalized = HelloGuys
String finalized = Hello Guys // here, the delimiter should be 0x1E 

我该怎么做?我试过Character.toString("0x1E"),但没用。

我的想法是将 0x1E 转换为字符串,将其放入一个变量中,然后将该变量与 finalized 字符串连接起来。

【问题讨论】:

标签: java ascii


【解决方案1】:

在 Java 中,一个字符可以被视为一个字节。您可以通过可读的方式声明它:char a = '!' 或值 char a = 27 或十六进制 char a = 0x1E

之后,您可以使用一些字符串方法(如替换或 idk)将字符添加到字符串中

char a = 0x1E;
String str = "test";
System.out.println(str.replaceAll('t', Character.toString(a));

编辑:在这种情况下使用Character.toString() 方法,导致replaceAll() 期望字符串而不是字符作为参数。 Character.toString() 使用可读值将您的字符转换为字符串。

编辑 2:正如 Tom Blodget 在 cmets 中提到的:/!\ char 不是 Byte!我写“可以被视为一个字节”的意思是:“它只包含一个数值,就像一个字节一样,所以你可以定义一个字符,就像你定义一个字节一样,给它一个数值”。但实际上一个字符从\u0000\uFFFF 并被编码为2 个字节。

【讨论】:

  • 感谢您的回答。 String separated = "blabla" + (char) 30 +"asdsadasd"; 也可以吗?
  • 那么我的示例比您的代码示例更容易吗?还是你的更好?只是询问“干净的代码”
  • @Blnpwr 这取决于你的情况。如果您打算只创建一个其中插入 1 或 2 个字符的字符串,那么您的方法更容易使用,也更清晰。如果您要将其应用于大量字符串或在其中插入大量字符,最好将其嵌入到某些代码行中以使其更清晰或防止将相同的东西重写 10 次..
  • “在 Java 中,一个 char 可以被视为一个字节”是相当具有误导性的。 char 的范围从 '\u0000' 到 '\uFFFF' (或者两个字节,如果你想这样看的话)。
  • @TomBlodget “可见”的意思是,char 只包含一个数值,就像 Byte 一样(或 int )。这并不意味着字符的大小。但是为了精确,我会相应地更新我的答案
猜你喜欢
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 2015-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
相关资源
最近更新 更多