草庐IT

ReplaceAll

全部标签

java - 为什么 java 中的 String.replaceAll() 需要正则表达式中的 4 个斜杠 "\\\\"才能实际替换 "\"?

我最近注意到,String.replaceAll(regex,replacement)在涉及转义字符“\”(斜杠)时表现得非常奇怪例如考虑有一个带有文件路径的字符串-Stringtext="E:\\dummypath"我们想用"/"替换"\\"。text.replace("\\","/")给出输出"E:/dummypath"而text.replaceAll("\\","/")引发异常java.util.regex.PatternSyntaxException。如果我们想用replaceAll()实现相同的功能,我们需要将其编写为,text.replaceAll("\\\\","/")一

java - 如何将空格更改为下划线并使字符串不区分大小写?

我有以下问题。在我的应用程序中有一个ListView。我从listview获取itemname并将其作为字符串传输到webview。如何忽略此字符串的大小写并将空格更改为下划线?例如:Stringitemname="FirstTopic"。我将它转移到下一个Activity,并希望忽略大小写并将空格更改为下划线(我想在结果中获得first_topic)。我在webviewactivity中得到“itemname”,并想做我为以下代码描述的内容:Stringfilename=bundle.getString("itemname")+".html";请帮忙。 最

java - 如何将空格更改为下划线并使字符串不区分大小写?

我有以下问题。在我的应用程序中有一个ListView。我从listview获取itemname并将其作为字符串传输到webview。如何忽略此字符串的大小写并将空格更改为下划线?例如:Stringitemname="FirstTopic"。我将它转移到下一个Activity,并希望忽略大小写并将空格更改为下划线(我想在结果中获得first_topic)。我在webviewactivity中得到“itemname”,并想做我为以下代码描述的内容:Stringfilename=bundle.getString("itemname")+".html";请帮忙。 最

java - String.replaceAll(regex) 进行两次相同的替换

谁能告诉我为什么System.out.println("test".replaceAll(".*","a"));结果aa注意下面的结果是一样的:System.out.println("test".replaceAll(".*$","a"));我已经在java6和7上对此进行了测试,两者的行为似乎相同。我是否遗漏了什么或者这是java正则表达式引擎中的错误? 最佳答案 这不是异常:.*可以匹配任何内容。您要求替换所有匹配项:第一次出现匹配整个字符串,因此正则表达式引擎从输入的末尾开始进行下一次匹配;但.*也匹配一个空字符串!因此,它匹

java - String.replaceAll(regex) 进行两次相同的替换

谁能告诉我为什么System.out.println("test".replaceAll(".*","a"));结果aa注意下面的结果是一样的:System.out.println("test".replaceAll(".*$","a"));我已经在java6和7上对此进行了测试,两者的行为似乎相同。我是否遗漏了什么或者这是java正则表达式引擎中的错误? 最佳答案 这不是异常:.*可以匹配任何内容。您要求替换所有匹配项:第一次出现匹配整个字符串,因此正则表达式引擎从输入的末尾开始进行下一次匹配;但.*也匹配一个空字符串!因此,它匹

java - 为什么 replaceAll 以 "illegal group reference"失败?

我需要更换\\\s+\\$\\$to$$我用过Strings="$$";s=s.replaceAll("\\s+\\$\\$","$$");但它会抛出异常java.lang.IllegalArgumentException:Illegalgroupreference 最佳答案 来自String#replaceAlljavadoc:Notethatbackslashes(\)anddollarsigns($)inthereplacementstringmaycausetheresultstobedifferentthanifitwer

java - 为什么 replaceAll 以 "illegal group reference"失败?

我需要更换\\\s+\\$\\$to$$我用过Strings="$$";s=s.replaceAll("\\s+\\$\\$","$$");但它会抛出异常java.lang.IllegalArgumentException:Illegalgroupreference 最佳答案 来自String#replaceAlljavadoc:Notethatbackslashes(\)anddollarsigns($)inthereplacementstringmaycausetheresultstobedifferentthanifitwer

java - Pattern.matches 不起作用,而 replaceAll 起作用

正则表达式似乎没问题,因为第一行正确地将子字符串替换为“helloworld”,但相同的表达式在后者中不匹配,因为我看不到“whynothelloworld?”在控制台上System.out.println(current_tag.replaceAll("^[01][r]\\s","helloworld"));if(Pattern.matches("^[01][r]\\s",current_tag)){System.out.println("whynothelloworld?");} 最佳答案 Pattern.matches()期望

java - Matcher.replaceAll() 和 String.replaceAll() 似乎不适用于 Galaxy S 6

我需要从字符串中删除一些字符。目前我正在尝试删除“”(空格)和“-”(连字符)。我试过两种方法。他们都在运行AndroidNBeta的Nexus5X上工作。它们都不适用于搭载AndroidM的三星GalaxyS6。第一种方法:StringnormalizedNumber=phoneNumber.replaceAll("[-]","");第二种方法:Patternpattern=Pattern.compile("[-]");StringnormalizedNumber=pattern.matcher(phoneNumber).replaceAll("");这样的基础类怎么会给出不同的结果

带有反向引用的 Java String.replaceAll()

有一个JavaRegex问题:给定一个字符串,如果“*”在字符串的开头或结尾,则保留它,否则将其删除。例如:*-->***-->*********-->***abc**def*-->*abcdef*答案是:str.replaceAll("(^\\*)|(\\*$)|\\*","$1$2");我在我的机器上尝试了答案,它有效。但我不知道它是如何工作的。根据我的理解,所有匹配的子字符串都应该替换为$1$2。但是,它的作用是:(^\\*)替换为$1,(\\*$)替换为$2,\\*替换为空。谁能解释一下它是如何工作的?更具体地说,如果表达式之间有|,String.replaceAll()如何与