gpt4 book ai didi

java - 同时进行字符串操作 : insert words at certain indexes in string,

转载 作者:行者123 更新时间:2023-12-01 06:18:24 24 4
gpt4 key购买 nike

我进行了很多搜索,但找不到任何可以让我同时在某些索引处插入单词的东西。例如 :我有一个字符串:

rock climbing is fun, I love rock climbing.

我有某些单词的 HashMap ,这些单词指示它们在字符串中的索引:例如:

rock -> 0,29
climbing -> 5,34
fun -> 17

现在我的问题是:我想在字符串中将 [start] 标记放在所有这些单词的开头,将 [end] 标记放在它们的末尾。我无法一一执行此操作,因为在这种情况下,一旦我在索引 0 处插入 [start],那么所有其他索引都将被修改,我将不得不重新计算它们。有没有一种方法可以让我一次插入所有标签或其他什么?有人可以建议一些其他解决方案来解决这个问题吗?

我不能使用正则表达式(replaceall方法),因为有时我会得到这样的句子:

rocks are hard.

HashMap 将是:

rock -> 0

我正在寻找更快的解决方案。

编辑:对于句子:

rocks are hard but frocks are beautiful.
rocks -> 0

在这里,我不想用标签替换连衣裙。

最佳答案

这并不完全是您想要的,但请将此视为尝试通过不同方式实现您的目标的替代解决方案。

我会假设两个不同的事情,首先,假设存在 List<String> words ,其中包含您要替换的单词。

那么代码将是:

public String insertTags(final String input) {
for (String word : words) {
input.replace(word, "[start]" + word + "[end]");
}
return input;
}

第二种情况,更接近您的示例但不使用索引,假设存在 Map<String, List<Integer>> ,其中包含单词和要在列表表示中替换它们的索引。

那么代码将是:

public String insertTags(final String input) {
for (Map.Entry<String, List<Integer>> entry : words.entrySet()) {
String word = entry.getKey();
input.replace(word, "[start]" + word + "[end]");
}
return input;
}

后者肯定更复杂,甚至不使用索引,因此最好将其重写为前者。

希望这可以帮助您,而不必担心索引。

关于java - 同时进行字符串操作 : insert words at certain indexes in string,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17820341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com