我正在尝试编写一种方法来将字符设置为字符串中单词的特定位置。该方法看起来像“setChar(l, w, c, d)”,我希望它使第 l 行的第 w 个单词中的第 c 个字符为“d”。例如,假设我有一个字符串“I am a student”,在 setChar(1, 2, 2, "X") 之后,句子变成了“I aX a student”。
仍然不知道如何做到这一点,所以请帮助我,更好的具体代码,非常感谢你们!!!!
我正在尝试编写一种方法来将字符设置为字符串中单词的特定位置。该方法看起来像“setChar(l, w, c, d)”,我希望它使第 l 行的第 w 个单词中的第 c 个字符为“d”。例如,假设我有一个字符串“I am a student”,在 setChar(1, 2, 2, "X") 之后,句子变成了“I aX a student”。
仍然不知道如何做到这一点,所以请帮助我,更好的具体代码,非常感谢你们!!!!
最简单的方法是连接。
int indx = 5;
char c = 'U';
String s = "Hello World";
s = s.substring(0,indx)+c+s.substring(indx+1,s.length());
System.out.println(s);
出去HellUWorld
更干净一点,替换支持字符数组中的字符并创建一个新字符串。
char[] c = "Hello World".toCharArray();
c[5] = 'U';
String s = new String(c);
System.out.println(s);
假设字符串是多行字符串(即它有换行符),您可以在换行符处拆分字符串:
String[] lines = string.split("\n");
然后在空格上拆分字符串:
String[] words = lines[l].split(" ");
然后用 StringBuilder 重新组装它,同时在 words[w][c] 中更改该字符。
类似的东西。以老式的类似 C 的方式执行此操作可能会更有效。
首先,String
它是不可变的,你不能改变任何给定String
对象的内容。其次,Java 中的所有数组都是基于 0 的,这对于示例很重要......
基本上,您需要使用StringBuilder
,它使用内部char
数组来存储单个字符。它提供了通过其方法操作添加、删除和更改char
数组内容的方法。
一旦你有String
包裹在 a 中,这是一个用于修改和单个字符StringBuilder
的简单过程。setCharAt
进行修改后,您需要将StringBuilder
背面的内容分配给String
例如...
String text = "I am a student";
StringBuilder sb = new StringBuilder(text);
sb.setCharAt(3, 'X');
text = sb.toString();
System.out.println(text);
现在,请记住,就像许多 Java API 一样,StringBuilder
是0
基于的,这意味着 的第一个字符StringBuilder
在 index 处0
,而不是1
仔细查看StringBuilder
API 以获取更多详细信息