Java:了解 String ReplaceAll() 方法

发布于 2024-10-20 09:12:12 字数 375 浏览 1 评论 0原文

我想在这里找到这个问题的答案。

首先,

blah[abc] = blah[abc].replaceAll("(.*) (.*)", "$2, $1");

有人可以向我解释一下 (.*)、$2 和 $1 是什么吗?

其次,当我将其嵌套在 for 语句中以反转字符串的两个部分时,我遇到了异常错误。我想知道是否有人知道这是为什么。

谢谢

编辑:这是我收到的错误

线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:1 在 ChangeNames.main(ChangeNames.java:21)

I'm looking to figure out the answer to this problem here.

First off,

blah[abc] = blah[abc].replaceAll("(.*) (.*)", "$2, $1");

Can someone explain to me what the (.*), $2 and $1 are?

Secondly, when I nest that within a for statement in order to reverse two parts of a string, I am hit with an exception error. I was wondering if anybody knew why that is.

Thanks

Edit: This is the error I receive

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at ChangeNames.main(ChangeNames.java:21)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜扑 2024-10-27 09:12:12

(.*) - 将是匹配任意数量字符的模式。括号将其标记为子模式(用于向后引用)。

2 美元$1 - 是反向引用。这些将是与您的第二个和第一个子模式匹配的内容。

基本上,replaceAll("(.) (.)", "$2, $1") 会查找由空格分隔的字符,然后在空格前添加逗号,此外还会翻转各部分。例如:

a b => b, a
Hello world => Hellw, oorld

不确定嵌套...您可以发布您正在运行的代码吗?

(.*) - would be a pattern to match any number of characters. Parentheses would be to mark it as a sub pattern (for back reference).

$2 & $1 - are back references. These would be things matched in your second and first sub pattern.

Basically replaceAll("(.) (.)", "$2, $1") would find characters separated by a space, then add a comma before the space, in addition to flipping the parts. For example:

a b => b, a
Hello world => Hellw, oorld

Not sure about nesting... Can you post the code you're running?

农村范ル 2024-10-27 09:12:12

您的正则表达式“(.)(.)”将是这样的:“(x)(y)”这将被替换为“$2,$1”。

Your regular expression "(.)(.)" will be of this sort : "(x)(y)" this will be replaced by "$2,$1.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文