根据开始和结束索引将花括号放在特定单词的句子中

时间:2012-11-16 10:32:29

标签: java

我需要根据索引将花括号放在句子中。假设我的输入句子是:"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,但在替换第一个单词后,它会将字符移动两个索引,这就是我遇到的问题。

有人能为我提供获得所需输出的解决方案吗?

3 个答案:

答案 0 :(得分:1)

我认为简单String.substring对于带有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);

答案 1 :(得分:1)

我会:

  1. 将原始字符串拆分为characters
  2. 迭代并将每个字符写入StringBuilder
  3. 在编写每个char之前,检查该char的索引是否对应于起始大括号位置,如果是,则将起始大括号写入StringBuilder
  4. 编写每个char后,检查该char的索引是否对应于end brace位置,如果是,则将结束括号写入StringBuilder
  5. 以上内容不会修改原始字符串(或者更改为您正在使用的字符串)。它从原始字符char-by-char构建一个新字符串。

答案 2 :(得分:0)

  • 对参数数组进行排序
  • 验证每个条目的端点是gte the begin
  • 验证每个条目的开头是GT最后一个条目的结尾
  • 循环播放字符,然后将其追加到StringBuilder
  • 如果在循环时遇到条目的开头或结尾,请在角色之前或之后设置适当的大括号