Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在字符串之间添加连字符_Java - Fatal编程技术网

Java 如何在字符串之间添加连字符

Java 如何在字符串之间添加连字符,java,Java,我有下面的sting xxxxx,我想添加一个连字符,比如x-xxxx,我如何使用Java来实现它?您可以使用 您只需事先检查,以避免出现“IndexOutOfBoundsException”(索引自动边界异常),但这很明显。您可以执行以下操作: String xxx = "xxxxx"; String hyphened = xxx.substring(0,1) + "-" + xxx.substring(1); String orgStr = "xxxxx"; String newStr =

我有下面的sting xxxxx,我想添加一个连字符,比如x-xxxx,我如何使用Java来实现它?

您可以使用

您只需事先检查,以避免出现“IndexOutOfBoundsException”(索引自动边界异常),但这很明显。

您可以执行以下操作:

String xxx = "xxxxx";
String hyphened = xxx.substring(0,1) + "-" + xxx.substring(1);
String orgStr = "xxxxx";
String newStr = orgStr.substring(0,1) + "-" + orgStr.substring(1)

String
在Java中是一种不可变的类型,这意味着一旦构建了
String
,就不能更改它所表示的字符序列

您可以使用
StringBuilder
类的实例来创建
String
的新实例,该实例表示原始
String
的一些转换。例如,根据您的要求添加连字符,可以执行以下操作:

String str = "xxxxx";
StringBuilder builder = new StringBuilder(str);
builder.insert(1, '-');
String hyphenated = builder.toString(); // "x-xxxx"
StringBuilder
最初包含
str
内容的副本;也就是说,
“xxxxx”

调用
insert
将生成器的内容更改为
“x-xxxx”

调用
toString
返回一个新的
字符串
,其中包含字符串生成器内容的副本

由于
String
类型是不可变的,因此对
StringBuilder
内容的任何操作都不会更改
str
连字符的内容

您可以通过执行以下操作来更改
String
instance
str
引用的内容

而不是

String hyphenated = builder.toString();
但是,
str
引用的字符串的内容永远不会更改,因为这是不可能的。相反,
str
过去指的是包含
“xxxxx”
的实例,现在指的是包含
“x-xxxx”
的实例

String in = "ABCDEF";
String out;
然后,任何一个

out = in.replaceFirst(".", "$0-");

将使
out=“A-BCDEF”

以下是另一种方法:

MaskFormatter fmt = new MaskFormatter("*-****");
fmt.setValueContainsLiteralCharacters(false);
System.out.println(fmt.valueToString("12345"));

如果您有一个StringBuilder或StringBuffer,您也可以使用insert:myStringBuilder.insert(1',-)+1用于指出例外可能性。这对我来说并不明显;我的示例不处理一般情况。正则表达式和格式说明符?你的前两个例子对我来说似乎很神秘@伊斯梅:我同意:-)。我认为发布这些不同的方法会对更复杂的替换有用,让读者知道有什么可能性。天哪,我不知道你可以参考
$0
。当然有道理,但我从来没有想过。学到了一些新东西,+1@老莱恩。对不可变对象行为的良好描述。
out = in.replaceFirst(".", "$0-");
out = String.format("%1$s-%2$s", in.substring(0,1), in.substring(1));
out = in.substring(0,1) + "-" + in.substring(1);
out = new StringBuilder(in).insert(1, '-').toString();
MaskFormatter fmt = new MaskFormatter("*-****");
fmt.setValueContainsLiteralCharacters(false);
System.out.println(fmt.valueToString("12345"));