1

各部分が$ 記号で区切られた 3 つの部分の文字列があります
。たとえば、

String s = "abc$efg$xyz";

今、次splitのような方法を使用して分割すると:

String values[] = s.split("$");

このvalues配列には、その文字列全体が 1 つの要素として含まれています。

しかし、これを使用すると:

String values[]=s.split("\\$");


これは、values配列に が含まれabc、インデックス 0、1、efgおよびxyz2 がそれぞれ含まれているという意味で完全に機能します。

使用を分割するときに同様に使用したため、最初になぜそれがsplit機能しなかったのか疑問に思っていましたsplita single white spacesplit(" ");

4

3 に答える 3

13

文字$は、正規表現で行末をマークするために使用される予約済みのトークンであるためです。そのため、を使用してエスケープする\\必要があります。

于 2012-11-04T12:29:13.590 に答える
7

String.split正規表現を取ります。

$正規表現の は文字列の nd を意味するため、リテラル文字に一致させたい場合はエスケープする必要があります$

于 2012-11-04T12:29:07.690 に答える
0

あなたの例に示されている$は正規表現であり、Javaの正規表現で使用される文字列の終わりを意味します

それはのために使用されます

$   Checks if a line end follows

したがって、\\ を使用する必要があります

于 2012-11-04T13:17:27.847 に答える