0

我正在尝试编写一种方法来将字符设置为字符串中单词的特定位置。该方法看起来像“setChar(l, w, c, d)”,我希望它使第 l 行的第 w 个单词中的第 c 个字符为“d”。例如,假设我有一个字符串“I am a student”,在 setChar(1, 2, 2, "X") 之后,句子变成了“I aX a student”。

仍然不知道如何做到这一点,所以请帮助我,更好的具体代码,非常感谢你们!!!!

4

3 回答 3

1

最简单的方法是连接。

    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);
于 2013-09-30T00:05:53.690 回答
1

假设字符串是多行字符串(即它有换行符),您可以在换行符处拆分字符串:

String[] lines = string.split("\n");

然后在空格上拆分字符串:

String[] words = lines[l].split(" ");

然后用 StringBuilder 重新组装它,同时在 words[w][c] 中更改该字符。

类似的东西。以老式的类似 C 的方式执行此操作可能会更有效。

于 2013-09-30T00:09:20.613 回答
1

首先,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 一样,StringBuilder0基于的,这意味着 的第一个字符StringBuilder在 index 处0,而不是1

仔细查看StringBuilderAPI 以获取更多详细信息

于 2013-09-30T00:03:48.237 回答