我有一个像这样的字符串:
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
答案 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