1

我需要根据索引将花括号放在一个句子中。假设我的输入语句是:"I am a girl and I live in Nepal."并且我需要根据

[12, 15], [2, 4], [23, 25]

这些索引分别对应于单词"am","and""in"。所需的输出应该是:

"I {am} a girl {and} I live {in} Nepal."  

我尝试过使用substring,但是在它替换了第一个单词之后,它会将字符移动两个索引,这就是我遇到的问题。

谁能为我提供解决方案以获得所需的输出?

4

3 回答 3

1

我认为String.substring使用 a 的索引很简单String.replace

这是索引之一的代码 - [2, 4]: -

String str = "I am a girl and I live in Nepal.";

String str2 = str.replace(str.substring(2, 4), "{" + str.substring(2, 4) + "}");
System.out.println(str2);   // str is not changed.

输出: -

I {am} a girl and I live in Nepal.

如果您不知道索引,而只有单词,那么您可以使用String.indexOf方法找到它。

这是更好的解决方案: -

    String str = "I am a girl and I live in Nepal.";

    int startIndex = str.indexOf("am");
    int endIndex = startIndex + "am".length();

    str = str.replace(str.substring(startIndex, endIndex), 
                "{" + str.substring(startIndex, endIndex) + "}");

    System.out.println(str);
于 2012-11-16T10:36:35.583 回答
1

我会:

  1. 将原始字符串拆分为字符
  2. 遍历并将每个字符写入StringBuilder
  3. 在编写每个字符之前,检查该字符的索引是否对应于起始大括号位置,如果是,则将起始大括号写入 StringBuilder
  4. 写入每个字符后,检查该字符的索引是否对应于结束括号位置,如果是,则将结束括号写入 StringBuilder

以上内容不会修改您的原始字符串(或者更确切地说是您正在使用的字符串)。它从原始字符逐个字符地构建一个新字符串。

于 2012-11-16T10:38:27.887 回答
0
  • 对参数数组进行排序
  • 验证每个条目的端点是 gte 的开始
  • 验证对于每个条目,开始是 gt 最后一个条目的结尾
  • StringBuilder循环遍历字符,随时将它们附加到 a
  • 如果在循环时遇到条目的开头或结尾,请在字符之前或之后设置适当的大括号
于 2012-11-16T11:14:18.193 回答