1

我有以下形式的字符串:

भन्‍‌ने [-0.4531954191090929, 0.7931147934270654, -0.3875088408737827, -0.09427394940704822, 0.10065554475134718, -0.22044284832864797, 0.3532556916833505, -1.8256229909222224, 0.8036832111904731, 0.3395868096795993]

无论 [ or ] or ,char 出现在哪里,我只想删除它们,并且我希望每个单词和浮点数都用空格分隔。如下:

भन्‍‌ने -0.4531954191090929 0.7931147934270654 -0.3875088408737827 -0.09427394940704822 0.10065554475134718 -0.22044284832864797 0.3532556916833505 -1.8256229909222224 0.8036832111904731 0.3395868096795993

我将这些字符串中的每一个表示为line. 我做了以下事情:

line.replaceAll("([|]|,)$", " ");

但这对我不起作用。输入行没有任何变化。非常感谢任何帮助。

4

4 回答 4

3

字符串是不可变的。尝试

line = line.replaceAll("([|]|,)$", " ");

或者更详细一点,但避免使用正则表达式:

char subst = ' ';
line = line.replace('[', subst).replace(']', subst).replace(',', subst);
于 2012-04-25T20:03:39.183 回答
2

在 Java 中,字符串是不可变的,这意味着字符串的内容永远不会改变。所以,打电话

line.replaceAll("([|]|,)$", " ");

不会更改 的内容line,但会返回一个新字符串。您需要将方法调用的结果分配给一个变量。例如,如果您不关心原始内容line,则可以编写

line = line.replaceAll("([|]|,)$", " ");

以获得您最初预期的效果。

于 2012-04-25T20:03:26.180 回答
1

[并且]是正则表达式中的特殊字符。replaceAll 应将正则表达式作为其第一个输入,因此您必须对其进行转义。

String result = line.replaceAll("[\\[\\],]", " ");

无法说出您想用原始正则表达式做什么,为什么会有 $ 等,需要了解您期望放在那里的事情。

于 2012-04-25T20:17:57.623 回答
1

尝试

line = "asdf [foo, bar, baz]".replaceAll("(\\[|\\]|,)", "");

正则表达式语法用于[]定义组,[a-z]因此您必须屏蔽它们。

于 2012-04-25T20:19:20.463 回答