标签: replaceall

Java中的replace()和replaceAll()

以下代码使用Java replace()中的String类的方法.

String a = "abc/xyz";
System.out.println(a.replace("/", "\\"));
Run Code Online (Sandbox Code Playgroud)

/在给定的String a中被替换为\.

如果我们使用replaceAll()如下方法,同样的事情是错误的.

System.out.println(a.replaceAll("/", "\\"));
Run Code Online (Sandbox Code Playgroud)

它会导致java.lang.StringIndexOutOfBoundsException抛出异常.它需要两个额外的反斜杠\,如下所示,因为replaceAll()使用正则表达式,而不是replace()方法的情况.

System.out.println(a.replaceAll("/", "\\\\"));
Run Code Online (Sandbox Code Playgroud)

唯一的问题是为什么这个方法只使用两个斜线就像这样a.replaceAll("/", "\\")抛出java.lang.StringIndexOutOfBoundsException


split()另一方面,该方法最初发布了一个waring Invalid regular expression: Unexpected internal error(我正在使用NetBeans 6.9.1).

String b="abc\\xyz";
System.out.println(b.split("\\")[0]+b.split("\\")[1]); //Issues a warning as specified.
Run Code Online (Sandbox Code Playgroud)

尝试运行此操作会导致java.util.regex.PatternSyntaxException抛出异常.

由于它使用正则表达式replaceAll(),它需要四个反斜杠.

System.out.println(b.split("\\\\")[0]+b.split("\\\\")[1]);
Run Code Online (Sandbox Code Playgroud)

为什么a.replaceAll("/", "\\\\");在前面的情况下不会发出这样的警告或这样的运行时异常,即使它有一个无效的模式?

java regex string replace replaceall

7
推荐指数
1
解决办法
6484
查看次数

Java替换所有反向引用

可能重复:
String.replaceAll()异常与正则表达式中的贪心量词

我正在编写使用的代码,Matcher#replaceAll并发现以下结果非常令人困惑:

Pattern.compile("(.*)").matcher("sample").replaceAll("$1abc");
Run Code Online (Sandbox Code Playgroud)

现在,我希望输出可以,sampleabc但Java会引发我的注意sampleabcabc.

有人有什么想法吗?

现在,当然,当我锚定模式(^(.*)$)时,问题就消失了.我仍然不知道为什么地狱会replaceAll做那样的双重替换.

并加上侮辱伤害,遵循以下代码:

Pattern.compile("(.*)").matcher("sample").replaceFirst("$1abc")
Run Code Online (Sandbox Code Playgroud)

按预期工作,只返回sampleabc.

java regex replaceall

7
推荐指数
2
解决办法
1747
查看次数

在java中使用反斜杠转义空间

我想从路径字符串中替换空格.我试过下面但似乎没有工作:

String path = "/Users/TD/San Diego";
path=path.replaceAll(" ","\\ ");
System.out.println(path);
Run Code Online (Sandbox Code Playgroud)

目标是转换

"/ Users/TD/San Diego"改为"/ Users/TD/San\Diego"

字符串中的任何其他空间也需要替换为"\"

java string replace escaping replaceall

7
推荐指数
1
解决办法
2万
查看次数

Java,如何用字符串中的美元符号替换单词?

我可以通过使用Matcher.quoteReplacement. 我可以通过添加边界字符替换单词来替换美元符号:

from = "\\b" + from + "\\b"; 
outString = line.replaceAll(from, to);
Run Code Online (Sandbox Code Playgroud)

但我似乎无法将它们结合起来用美元符号代替单词.

这是一个例子.我试图用" $temp4" 替换" "(NOT $temp40)register1.

        String line = "add, $temp4, $temp40, 42";
        String to = "register1";
        String from = "$temp4";
        String outString;


        from = Matcher.quoteReplacement(from);
        from = "\\b" + from + "\\b";  //do whole word replacement

        outString = line.replaceAll(from, to);
        System.out.println(outString);
Run Code Online (Sandbox Code Playgroud)

输出

"add, $temp4, $temp40, 42"
Run Code Online (Sandbox Code Playgroud)

如何让它替换$ temp4和$ temp4?

java regex replaceall

7
推荐指数
1
解决办法
473
查看次数

与preg_replace相同的Java是什么?

<?php
    $str = "word <a href=\"word\">word</word>word word";
    $str = preg_replace("/word(?!([^<]+)?>)/i","repl",$str);
    echo $str;
    # repl <word word="word">repl</word>
?>
Run Code Online (Sandbox Code Playgroud)

来源:http://pureform.wordpress.com/2008/01/04/matching-a-word-characters-outside-of-html-tags/

不幸的是,我的项目需要一个仅适用于Java的语义库...

//谢谢Celso

php java regex replaceall

6
推荐指数
1
解决办法
1万
查看次数

用Java替换字符串中的所有"("和")"

如何用Java中的fullstop替换字符串中的所有"("和")"?我试着用以下方式:

String url = "https://bitbucket.org/neeraj_r/url-shortner)";
url.replaceAll(")", ".");
url.replaceAll(")", ".");
Run Code Online (Sandbox Code Playgroud)

但它不起作用.错误是:

Exception in thread "main" java.util.regex.PatternSyntaxException: Unmatched closing
')'
 )
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at com.azzist.cvConversion.server.URLChecker.main(URLChecker.java:32)
Run Code Online (Sandbox Code Playgroud)

我认为这个问题也存在于所有正则表达式中.\之前添加)不起作用.

java regex string replaceall

6
推荐指数
3
解决办法
3万
查看次数

从字符串中删除某些字符

我想创建一个程序,在用户输入的字符串中给出字符,单词等的数量.要获得单词计数,我需要删除所有句点和逗号形成一个字符串.到目前为止我有这个:

import javax.swing.JOptionPane;
public class WordUtilities
{
   public static void main(String args[])
   {
      {
      String s = JOptionPane.showInputDialog("Enter in any text.");

      int a = s.length();
      String str = s.replaceAll(",", "");
      String str1 = str.replaceAll(".", "");
      System.out.println("Number of characters: " + a);
      System.out.println(str1);
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

但最后我只得到了这个:

Number of characters: (...)
Run Code Online (Sandbox Code Playgroud)

为什么不给我字符串没有逗号和句号?我需要修理什么?

java string replace character replaceall

6
推荐指数
1
解决办法
1万
查看次数

Java替换所有正则表达式错误

我想将所有"*"转换为".*",除了"\*"

String regex01 = "\\*toto".replaceAll("[^\\\\]\\*", ".*");
assertTrue("*toto".matches(regex01));// True

String regex02 = "toto*".replaceAll("[^\\\\]\\*", ".*");
assertTrue("tototo".matches(regex02));// True

String regex03 = "*toto".replaceAll("[^\\\\]\\*", ".*");
assertTrue("tototo".matches(regex03));// Error
Run Code Online (Sandbox Code Playgroud)

如果"*"是第一个出现错误的字符:java.util.regex.PatternSyntaxException:在索引0附近悬挂元字符'*'

什么是正确的正则表达式?

java regex replaceall

6
推荐指数
1
解决办法
379
查看次数

如何将characher`\ n`替换为android中的新行

我对API请求有一个服务器响应,如下所示。

Success! Your request has been sent.\n\nWe’ll inform you once it is done.
Run Code Online (Sandbox Code Playgroud)

我需要在小吃栏中显示此消息。我需要\n在此响应中添加新行。我试图通过使用replaceAll

String message = (serverResponse.getMessage()).replaceAll("\\n", System.getProperty("line.separator"));
Run Code Online (Sandbox Code Playgroud)

但它显示像这样

在此处输入图片说明

如果我添加了string.xml资源文件并开始使用,getString(R.string.message)则会出现相同的消息,\n则说明工作正常。如何从此响应字符串获取新行?

我尝试\n使用<new_line>服务器响应中的其他字符进行更改,并且与可以正常使用replaceAll。问题仅\n在于响应消息。有什么解析的方法\n吗?

string android escaping replaceall

6
推荐指数
2
解决办法
6155
查看次数

替换所有出现的组

我想替换字符串中所有出现的组.

String test = "###,##.##0.0########";
System.out.println(test);
test = test.replaceAll("\\.0(#)", "0");
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)

我试图获得的结果###,##.##0.000000000 基本上,我想要替换所有#尾随的符号.0.我发现这是关于动态替换的,但我不能真正使它工作.

最佳解决方案不会考虑要替换的哈希数量(如果这样可以清除任何混淆).

java regex replaceall

5
推荐指数
2
解决办法
559
查看次数

标签 统计

replaceall ×10

java ×9

regex ×7

string ×5

replace ×3

escaping ×2

android ×1

character ×1

php ×1