当前位置: 首页 > 知识库问答 >
问题:

Java字符串替换为Array中新模式的正则表达式

方嘉志
2023-03-14

我有一个我无法解决的问题

我有一个段落,其中包含一些关键字,需要用存储在数组中的新值替换

示例:

段落:“我最喜欢的水果是[0],但我也喜欢[1]和[3]。”

数组:水果=[“香蕉”、“橘子”、“苹果”、“葡萄”]

我的期望是:我最喜欢的水果是香蕉,但我也喜欢橘子和葡萄

你能帮我找到解决这个问题的办法吗?

我试图把我的句子转换成这样的数组:

[“我最喜欢的水果是“,”[0],“,但我也喜欢“,”[1],“和”,“[3]”]

之后,我将[0]替换为0,我得到了这个:

["我最喜欢的水果是","0",",但我也喜欢","1","and","3"]

我倾向于将上面数组中的013替换为水果[0]水果[1]水果[3]的值,然后将该数组转换为完整的字符串

但我认为这不是最好的解决方案,因为如果我得到这样一个输入句子:“2[2]”,那么我将收到输出是AppleApple,而期望是2Apple

共有3个答案

周翰
2023-03-14

如果您能够更改段落的格式,那么您可以从这个片段开始。

String paragraph = "My most favorite fruit is %s, but I also like %s and %s";
String[] fruits = {"Banana", "Orange", "Apple", "Grape"};
System.out.printf(paragraph, fruits[0], fruits[1], fruits[2]);                 

输出

My most favorite fruit is Banana, but I also like Orange and Apple

编辑另一个不必维护水果位置参数的解决方案

String paragraph = "My most favorite fruit is {0}, but I also like {1} and {3}";
Object[] fruits = {"Banana", "Orange", "Apple", "Grape"};
MessageFormat mf = new MessageFormat(paragraph);
System.out.println(mf.format(fruits));

输出

My most favorite fruit is Banana, but I also like Orange and Grape
公孙森
2023-03-14

使用字符串。代替

String sentence = "My most favorite fruit is [0], but I also like [1] and [3]";
String[] replacements = {"Banana", "Orange", "Apple", "Grape"};
for(int i = 0; i < replacements.length; i++)
    sentence = sentence.replace("[" + i + "]", replacements[i]);
方飞鸣
2023-03-14

Java的字符串格式对此有一个内置的语法。一般格式是:

%[argument_index$][flags][width][.precision]conversion

因此,您可以使用例如%1$s来表示第一个格式参数,%2s表示第二个格式参数等。请注意,索引是基于一的,而不是基于零的。

例如

String[] fruits = {"Banana", "Orange", "Apple", "Grape"};
System.out.format(
    "My most favorite fruit is %1$s, but I also like %2$s and %4$s",
    fruits);
 类似资料:
  • 问题内容: 我正在尝试使用正则表达式替换字符串中所有出现的英国汽车登记信息。 当字符串与以下正则表达式完全匹配时,以下swift代码可完美地用于a。 结果是 但是,以下操作无效,并且字符串未修改 结果是 谁能给我任何指示? 问题答案: 您需要删除和锚点。 该装置 开始字符串 和手段 结束字符串 (或行,这取决于选项)。这就是第一个示例起作用的原因:在第一个测试字符串中,字符串的开头实际上是您的模式

  • 我试图匹配正则表达式模式来替换特定字符串。 示例文本:ABC/1111111 031111111/0318*12345678 我想用“/1222”替换03和18 in/0318,即(2022年12月)。我尝试了string replaceAll方法,但它替换了提供的示例字符串中所有匹配的字符。比如下面; 我尝试过的示例代码: 样本文本。替换(匹配器组(2),“12”); 样本文本。替换(匹配器组(

  • 本文向大家介绍正则表达式的字符串替换方法,包括了正则表达式的字符串替换方法的使用技巧和注意事项,需要的朋友参考一下 我有以下几行: d:\Projects\qqq\Development\qqq.MySol1.sln d:\Projects\qqq\qqqDevelopment\qqqMySol2.sln d:\Projects\qqq\Development\MyInstaller.sln d:

  • 我有一根绳子。假设:< br> 我想将所有替换为单词和替换为。一般来说,我想替换单个字母或单个字母与空格或点之间的所有点。我认为匹配的正则表达式是: 我怎么能只替换那个点,而不是所有匹配的东西? 编辑: 预期产出: 编辑2: 基本任务是从缩写和首字母缩略词中删除点,这些缩略词可以用点或不用点编写。所以一个好的正则表达式也很有价值

  • 问题内容: 我有以下几种可能的形式的字符串: 我希望能够将它正则化为,基本上替换和之间的所有内容。我试过了: 但这是行不通的。任何帮助表示赞赏。 PS 表示有一个换行符用于此目的。实际上不在那里。 问题答案: 您可以使用 并替换为。请参阅在线Go regex演示。 在这里,匹配并捕获子字符串(它将从替换模式中引用此值),并将匹配并消耗除换行符以外的任何0+字符,直至行尾。 参见Go演示: 输出:

  • 我想使用Gson将字符串转换为Foo对象: 下面是我的正则表达式: 如何使用此正则表达式将所有,.和替换为,,而不更改JSON中的键和值?