正则表达式不检测空格

我从一个YouTube我复制的频道订阅了一些订阅。是"4 372 236"。我正在https://regex101.com"\s+"上测试该数字的正则表达式,但它不起作用。当我自己写相同的数字时,正则表达式确实有效。有谁知道怎么回事?。

我正在尝试从这些数字中删除空格字符,但我做不到。我也尝试了该.replaceAll(" ", "")方法,但也不起作用。

http://img4.mukewang.com/61de356500013ed010470250.jpg


然后我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(" ", "");


有只小跳蛙
浏览 300回答 3
3回答

繁华开满天机

好的,伙计们,我发现了。这不是为什么 String.replace 不起作用的重复?. 我一直认为 Java 中的字符串是不可变的。数字之间没有简单的空格。这是无间断空间' (U+00A0)。所以,正则表达式应该是这样的 subs = subs.replaceAll("[\\u202F\\u00A0]", "");也许它会在未来帮助某人:) 谢谢@metters

犯罪嫌疑人X

我建议您将该数字复制到记事本++ 中并使用“显示所有符号”选项。也许之间不仅有空格。编辑:很抱歉没有使用评论功能,我需要声誉,这很糟糕。

呼啦一阵风

您需要转义反斜杠:System.out.println("4 372 236".replaceAll("\\s+", ""));打印:4372236
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java