我從一個(gè)YouTube我復(fù)制的頻道訂閱了一些訂閱。是"4 372 236"。我正在https://regex101.com"\s+"上測試該數(shù)字的正則表達(dá)式,但它不起作用。當(dāng)我自己寫相同的數(shù)字時(shí),正則表達(dá)式確實(shí)有效。有誰知道怎么回事?。我正在嘗試從這些數(shù)字中刪除空格字符,但我做不到。我也嘗試了該.replaceAll(" ", "")方法,但也不起作用。然后我JSON library用來獲取這樣的訂閱:JSONObject jsonObject = new JSONObject(); jsonObject = new JSONObject(content); JSONArray tabs = jsonObject.getJSONObject("contents") .getJSONObject("twoColumnBrowseResultsRenderer") .getJSONArray("tabs"); JSONObject tabRenderer = tabs.getJSONObject(5).getJSONObject("tabRenderer"); JSONObject sectionListRenderer = tabRenderer.getJSONObject("content").getJSONObject("sectionListRenderer"); JSONArray contents2 = sectionListRenderer.getJSONArray("contents"); JSONObject itemSectionRenderer = contents2.getJSONObject(0).getJSONObject("itemSectionRenderer").getJSONArray("contents").getJSONObject(0); JSONObject channelAboutFullMetadataRenderer = itemSectionRenderer.getJSONObject("channelAboutFullMetadataRenderer"); String subs = channelAboutFullMetadataRenderer.getJSONObject("subscriberCountText").getJSONArray("runs").getJSONObject(0).getString("text");最后,我使用regex刪除數(shù)字中的空格:subs = subs.replaceAll("\\s+", "");System.out.println(subs);我也試過這個(gè),但它不起作用。我認(rèn)為這不是一個(gè)常規(guī)空間,但我不知道如何識(shí)別它。 subs = subs.replaceAll(" ", "");
3 回答

繁華開滿天機(jī)
TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
好的,伙計(jì)們,我發(fā)現(xiàn)了。這不是為什么 String.replace 不起作用的重復(fù)?. 我一直認(rèn)為 Java 中的字符串是不可變的。
數(shù)字之間沒有簡單的空格。這是無間斷空間' (U+00A0)。所以,正則表達(dá)式應(yīng)該是這樣的
subs = subs.replaceAll("[\\u202F\\u00A0]", "");
也許它會(huì)在未來幫助某人:) 謝謝@metters

犯罪嫌疑人X
TA貢獻(xiàn)2080條經(jīng)驗(yàn) 獲得超4個(gè)贊
我建議您將該數(shù)字復(fù)制到記事本++ 中并使用“顯示所有符號(hào)”選項(xiàng)。也許之間不僅有空格。
編輯:很抱歉沒有使用評論功能,我需要聲譽(yù),這很糟糕。

呼啦一陣風(fēng)
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超6個(gè)贊
您需要轉(zhuǎn)義反斜杠:
System.out.println("4 372 236".replaceAll("\\s+", ""));
打?。?372236
添加回答
舉報(bào)
0/150
提交
取消