在Java中添加字符到字符串
在本教程中,我们将看到如何在Java中添加字符到字符串。
有多种方法可以为字符串添加字符。
将字符添加到字符串的开始
我们可以在字符串开始时添加字符 +
运算符。
char startChar='i'; String blogName = "giftidea"; String cblogName = startChar + blogName;
将字符添加到字符串的末尾
我们可以在字符串开始时添加字符 +
运算符。
char endChar ='a'; String blogNameWOG = "igiftide"; String blogNameWG = blogNameWOG + endChar;
进一步阅读
以下是在字符串的开始和结尾处添加字符的完整程序。
package org.arpit.theitroad; public class AddCharacterStartEndMain { public static void main(String[] args) { char startChar='i'; String blogName = "giftidea"; String cblogName = startChar + blogName; System.out.println(cblogName); char endChar ='a'; String blogNameWOG = "igiftide"; String blogNameWG = blogNameWOG + endChar; System.out.println(blogNameWG); } }
输出:
theitroad theitroad
正如我们所看到的,我们在字符串 'giftidea'之前添加了 'i', 在 'igiftide'后面添加了a 。
在给定的帖子中添加字符
有几种方法可以在给定位置添加添加字符到串。
使用StringBuffer.
我们可以使用 StringBuffer's
insert()
在给定位置将字符添加到字符串的方法。
让我们在一个例子的帮助下看看。
package org.arpit.theitroad; public class AddCharacterToStringAnyPosition { public static void main(String[] args) { String blogName = "igifidea"; char t ='t'; String cblogName = addCharToString(blogName,t,4); System.out.println(cblogName); } public static String addCharToString(String str, char c, int pos) { StringBuilder stringBuilder = new StringBuilder(str); stringBuilder.insert(pos, c); return stringBuilder.toString(); } }
正如我们所看到的,我们在第4个位置添加了字母t。
如果您想要线程安全的代码,那么应该使用StringBuffer而不是StringBuilder。
使用子字符串
我们还可以使用String的子字符串方法在给定位置添加字符到字符串。
让我们在一个例子的帮助下看看。
package org.arpit.theitroad; public class AddCharacterToStringAnyPosition { public static void main(String[] args) { String blogName = "igifidea"; char t ='t'; String cblogName = addCharToStringUsingSubString(blogName,t,4); System.out.println(cblogName); } public static String addCharToStringUsingSubString(String str, char c, int pos) { return str.substring(0, pos)+ c +str.substring(pos); } }
解释
- 在positon之前获得一个子字符串
- 添加字符
- 在positon之后获得一个子字符串
虽然这看起来很简单且可读的解决方案,但使用这种方法存在缺点。
由于我们已经知道字符串在Java中是不可变的。
每个子字符串调用都会创建新的字符串对象。
当我们使用时 +
运算符要连接字符串,它内部也创建了StringBuffer对象。
如果我们需要多次调用此方法,那么这可能导致频繁的垃圾收集,因为由于临时对象,堆内存将填充更快。
使用apache common lang3
我们也可以使用apache common的 StringUtils
要在此处添加字符串的字符,这是我们需要为Apache公共Lang3添加的依赖项 pom.xml
。
</p> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.9</version> </dependency> <p>
这是一个例子:
package org.arpit.theitroad; import org.apache.commons.lang3.StringUtils; public class AddCharacterToStringAnyPosition { public static void main(String[] args) { String blogName = "igifidea"; char t ='t'; String cblogName = addCharToStringUsingApache(blogName,t,4); System.out.println(cblogName); } public static String addCharToStringUsingApache(String str, char c, int pos) { return StringUtils.overlay(str,""+c, pos, pos); } }
正如我们所看到的,我们使用过 StringUtils
s overlay()
在给定位置将字符添加到字符串的方法。 StringUtils.overlay(str, overlay, start, end)
采取四个论点。 str
:Orignal String. overlay
:我们要添加的字符串 start
:开始位置 end
:结束位置
由于我们只想添加一个字符,开始和结束位置是相同的 pos
。