Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 根据单词的开始和结束索引,在句子中为特定单词添加花括号_Java - Fatal编程技术网

Java 根据单词的开始和结束索引,在句子中为特定单词添加花括号

Java 根据单词的开始和结束索引,在句子中为特定单词添加花括号,java,Java,我需要根据索引在句子中加上花括号。假设我的输入句子是:“我是一个女孩,我住在尼泊尔。”,我需要根据需要放上花括号 [12, 15], [2, 4], [23, 25] 这些索引分别对应于“中的“”am“,”和“和”三个词。 所需输出应为: "I {am} a girl {and} I live {in} Nepal." 我曾尝试使用子字符串,但在它替换第一个单词后,它会将字符移动两个索引,这就是我遇到的问题 谁能为我提供获得所需输出的解决方案 我认为简单的String.substring

我需要根据索引在句子中加上花括号。假设我的输入句子是:
“我是一个女孩,我住在尼泊尔。”
,我需要根据需要放上花括号

[12, 15], [2, 4], [23, 25]
这些索引分别对应于“中的“
”am“
”和“
”三个词。
所需输出应为:

"I {am} a girl {and} I live {in} Nepal."  
我曾尝试使用
子字符串
,但在它替换第一个单词后,它会将字符移动两个索引,这就是我遇到的问题


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

我认为简单的
String.substring
应该可以用
字符串替换索引

以下是其中一个索引的代码-
[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);
我想:

  • 将原始字符串拆分为
  • 迭代并将每个字符写入
  • 在写入每个字符之前,请检查该字符的索引是否对应于起始大括号位置,如果是,请将起始大括号写入StringBuilder
  • 写入每个字符后,请检查该字符的索引是否对应于端括号位置,如果是,请将端括号写入StringBuilder
  • 以上内容不会修改原始字符串(或者更确切地说是您正在使用的字符串)。它从原始字符逐字符构建一个新字符串。

    • 对参数数组进行排序
    • 验证每个条目的端点是否为gte开始
    • 验证每个条目的开始是否为最后一个条目的结束
    • 在字符上循环,并在运行时将其附加到
      StringBuilder
    • 如果循环时遇到条目的开头或结尾,请在字符之前或之后设置相应的大括号

    是的,你说得对。但是这样做会将原来的句子修改2个索引,这是一个问题。@SuneetaSingh。然后创建新字符串并分配给它。@SuneetaSingh。。退房我又添加了一个代码。那就行了。它首先找到单词的索引。所以,长度的变化无关紧要。试着从最高的索引开始,朝着最低的索引开始。你也可以把绳子分成几个部分,加上支架,然后把这些部分组装成一个新的绳子。