在字符串

时间:2017-12-12 11:34:52

标签: java

我有一个像这样的字符串:

String content = "key1: hello key2: bye key3: key4: adios";

我希望能够以值的方式操作String:

key1: hello | key2: bye | key3: | key:4 adios

我正在从文件中检索此内容,因此我不必亲自操作String类型的Object。它可以是任何东西。 注意:键后面的一些值可以为空,如示例所示。

我的最终目标是使用此文件填充地图。我将使用com.google.common.base.Splitter; 使这成为现实。使用":"作为键值分离者和" |"是每个键值对之间的分裂。

txt文件结构还有一件事是不可预测的。

可能不是一件简单的事
key1: hello
key2: bye
key3: 
key4: adios

可能类似

key1: hello  key2: hello
key3: 
key4: adios

1 个答案:

答案 0 :(得分:1)

使用以下模式尝试查找和替换:

([^:]+:\s+\w+)\s+

这会捕获每个冒号分隔的键值对,我们将替换为此捕获的数量,后跟管道。请注意,我们不必担心最后一个键值对的边缘情况,因为它不需要跟随管道。

String content = "key1: hello key2: bye key3: key4: adios";
String output = content.replaceAll("([^:]+:\\s+\\w+)\\s+", "$1 | ");
System.out.println(output);

key1: hello | key2: bye | key3: key4: adios

Demo