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。。退房我又添加了一个代码。那就行了。它首先找到单词的索引。所以,长度的变化无关紧要。试着从最高的索引开始,朝着最低的索引开始。你也可以把绳子分成几个部分,加上支架,然后把这些部分组装成一个新的绳子。