java怎样将一个字符串中指定位置的字符换掉,从而得到一个新的字符串?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎样将一个字符串中指定位置的字符换掉,从而得到一个新的字符串?相关的知识,希望对你有一定的参考价值。

java字符串替换 一般使用substring() 和replace()方法组合使用达到精确替换的目的.
str.substring(0,1) 可以截取str字符串第一位字符.通过下标控制截取长度.可获得精确字符串
str.replace("a","b"); 把str字符串中所有的字符a都替换成字符b
参考技术A String s="abcd";
String s1=s.replace(s.charAt(i),'o');

这个是 指定位置为i,用o替换的程序。

或者直接。
String s1=s.subString(0,i-1);
String s2=s.subString(i+1);
String s=s1+s3+s2;
或者

StringBuilder sb=new StringBuilder()
String s=sb.add(s1).add(s3),add(s2).toString();
s3是你要代替的值 。例如上面的o本回答被提问者采纳
参考技术B String newStr=str.replace("old","new");

↑ ↑
新字符串 替换
参考技术C str.replace(old,new);

在 Java 中的 getBytes 中指定编码的重要性

【中文标题】在 Java 中的 getBytes 中指定编码的重要性【英文标题】:Importance of specifying the encoding in getBytes in Java 【发布时间】:2015-09-15 08:14:45 【问题描述】:

我理解在使用适当的格式(例如 hex、base64 等)将 byte[] 转换为 Java 中的 String 时需要指定编码,因为不同平台的默认编码可能不同。但我不确定在将字符串转换为字节时是否理解相同。所以这个问题是为了让我理解在通过网络传输字符串时需要指定字符集的概念。

考虑跟随。 Java中的代码

注意:下面示例中的字符串不是从文件中读取的,而是从另一个资源中创建的。

1: String message = "一条好消息";

2: byte[] encryptedMsgBytes = encrypt(key,,message.getBytes());

3: String base64EncodedMessage = new String (Base64.encodeBase64(encryptedMsgBytes));

我需要使用 Http Post 在网络上发送此信息,并且将在另一端接收和处理(解密、从 base64 转换等)。

根据阅读文章,推荐的做法是使用 .getBytes("utf-8") 在第 2 行,即 message.getBytes("UTF-8")

& 建议在另一端使用类似的方法来处理数据,如下面第 7 行所示

4: 字符串 base64EncodedMsg =

5: byte[] base64EncodedMsgBytes = Base64.encodeBase64(base64EncodedMsg));

6: byte[] decryptedMsgBytes = decrypt(aesKey, "AES", Base64.decodeBase64(base64EncodedMessage);

7: String originalMsg = new String(decryptedMsgBytes, "UTF-8");

鉴于 Java 的内部内存中字符串表示是 utf-16。 (不包括:序列化和文件保存期间的UTF8),如果解密也是用Java完成的,我们真的需要这个吗(注意:这不是一个实际的假设,只是为了便于讨论以了解需要提及编码)?因为,在 JVM 中,第 1 行的字符串“消息”使用 UTF-16 表示,不指定编码的 .getBytes() 方法是否总是返回 UTF-16 字节?或者是不正确的和 .getBytes() 方法没有指定编码总是返回原始字节?由于内部表示是 UTF-16,为什么特定 JVM 上的默认字符编码很重要?

如果它确实返回 UTF-16,那么是否需要在另一端使用 new String(decryptedMsgBytes, "UTF-8") ?

【问题讨论】:

【参考方案1】:

.getBytes() 方法在不指定编码的情况下不会 总是返回 UTF-16 字节?

这是不正确的。根据Javadoc,它使用平台的默认字符集:

使用平台的默认字符集将此String 编码为字节序列,并将结果存储到新的字节数组中。

【讨论】:

以上是关于java怎样将一个字符串中指定位置的字符换掉,从而得到一个新的字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Java 练习(将字符串中指定部分进行反转)

JAVA 删除字符串中指定的字符

JAVA 删除字符串中指定的字符

c语言用指针将一个字符串插入另一个字符串中指定位置

js获取一个字符串中指定字符串第n次出现的位置

[两个指针]删除字符串中指定的字符