我从一个YouTube我复制的频道订阅了一些订阅。是"4 372 236"。我正在https://regex101.com"\s+"上测试该数字的正则表达式,但它不起作用。当我自己写相同的数字时,正则表达式确实有效。有谁知道怎么回事?。我正在尝试从这些数字中删除空格字符,但我做不到。我也尝试了该.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删除数字中的空格:subs = subs.replaceAll("\\s+", "");System.out.println(subs);我也试过这个,但它不起作用。我认为这不是一个常规空间,但我不知道如何识别它。 subs = subs.replaceAll(" ", "");
3 回答

繁华开满天机
TA贡献1816条经验 获得超4个赞
好的,伙计们,我发现了。这不是为什么 String.replace 不起作用的重复?. 我一直认为 Java 中的字符串是不可变的。
数字之间没有简单的空格。这是无间断空间' (U+00A0)。所以,正则表达式应该是这样的
subs = subs.replaceAll("[\\u202F\\u00A0]", "");
也许它会在未来帮助某人:) 谢谢@metters
添加回答
举报
0/150
提交
取消