Java String.replace()不适用

Java String.replace()不适用,java,nxt,Java,Nxt,我正在尝试从字符串中删除非数字字符 我已尝试使用.replace()方法,但返回错误: 类型字符串中的方法replace(char,char)不适用于参数(String,String) 代码: 当我打印字符串gg时,初始化如下: String gg = p.toString(); 我得到输出:Object020f458 “我的电脑”在“替换”屏幕上突出显示错误: gg = gg.replace("{", ""); gg = gg.replace("=", ""); gg = gg.replac

我正在尝试从字符串中删除非数字字符

我已尝试使用
.replace()
方法,但返回错误:

类型字符串中的方法replace(char,char)不适用于参数(String,String)

代码:

当我打印字符串
gg
时,初始化如下:

String gg = p.toString();
我得到输出:
Object020f458

“我的电脑”在“替换”屏幕上突出显示错误:

gg = gg.replace("{", "");
gg = gg.replace("=", "");
gg = gg.replace("}", "");

int commaLoc = gg.indexOf(",");
int x = Integer.parseInt(gg.substring(0,commaLoc));
int y = Integer.parseInt(gg.substring(commaLoc + 1));
你可以用

public String replaceAll(String regex, String replacement)
这将用替换项替换所有匹配的表达式

gg = gg.replaceAll("{", ""); // replace all "{" with "".
gg = gg.replaceAll("=", "");
gg = gg.replaceAll("}", "");

所以我在看NXT及其API()
顺便说一句,我猜我绝对不是NXT和leJOS方面的专家

您可以通过JavaDoc看到,
replace(CharSequence,CharSequence)
方法不存在

虽然我不会以这种方式解决问题,但您可以尝试使用
StringBuilder
删除不需要的字符

例如,参见Jon Skeet的答案了解想法

您可以提取一种方法,例如:

private String removeChars(
        final String originalString,
        final String charsToRemove) {
    final StringBuilder stringBuilder = new StringBuilder(originalString);
    int i = stringBuilder.indexOf(charsToRemove);

    while (i != -1) {
        stringBuilder.replace(i, i + charsToRemove.length(), "");
        i = stringBuilder.indexOf(charsToRemove, i);
    }

    return stringBuilder.toString();        
}

错误必须在下面两行突出显示,而不是替换功能

   int x = Integer.parseInt(gg.substring(0,commaLoc));
   int y = Integer.parseInt(gg.substring(commaLoc + 1));
你忘了在第二行加逗号。应该是

   int y = Integer.parseInt(gg.substring(commaLoc, + 1));
但它仍然无法工作,因为您正在尝试使用无效范围的子字符串函数(因为commaLoc的值为-1)

尝试替换最后两行,如下所示,使其无错误

      int x = Integer.parseInt(gg.substring(6, 7));
      int y = Integer.parseInt(gg.substring(7, 8));
问题:

gg = gg.replace("{", "");
gg = gg.replace("=", "");
gg = gg.replace("}", "");
错误消息:

类型字符串中的方法replace(char,char)不适用于参数(String,String)

请尝试替换为
字符。最小值

gg = gg.replace('{', Character.MIN_VALUE);
gg = gg.replace('=', Character.MIN_VALUE);
gg = gg.replace('}', Character.MIN_VALUE);
替换为
,然后将所有
(,因为java“不喜欢空字符文本”)替换为
字符。最小值
):

Character.MIN_值不是空字符,而是最接近它的:),并转换(使用
String.replcae(char,char)
test):

致:


…这看起来很难复制和粘贴,但“看起来像空白”:)

因为我使用的字符串实际上是一个属性,所以我必须像将其自身格式化的属性一样检索它

 int Count = Integer.parseInt(p.getProperty("Number_of_properties"));
   for(int i = 1; i < Count; i++)
   {
    int x = Integer.parseInt(p.getProperty("x"+i));
    int y = Integer.parseInt(p.getProperty("y"+i));

   }

您使用的是哪个版本的Java?
String.replace(CharSequence,CharSequence)
是在Java 1.5中引入的。@JonSkeet my JDK是1.7您可能应该定义什么是“我的计算机”“意思是。您是通过命令行还是使用IDE进行编译?@LppEdd Im使用外部NXT,使用上的Lejos库eclipse@TotallyNotSuspisousAccount看看我的答案。希望我从正确的地方获得了API。这将在普通Java中引发异常,因为
replaceAll
接受正则表达式模式。您需要使用
“\\{
而不是“{”。而且在这种环境下,
replaceAll
似乎也不可用。我认为StringBuilder解决方案更合适。MIN_值并没有像您所说的那样真正删除字符……当然!这是一种完全的黑客方法:)……但仍然令人困惑,为什么
String.replace(“{,”)
不起作用。请参见上面我的答案。很可能他使用的是“专有/自定义”“JDK API。我对定制JDK不太确定,但我的意思是,它在乐高上,可能他们对可用API的数量进行了一些限制。阅读Jon Skeet对这个问题的评论感到奇怪:)thx,bro!:)…至少在JDK中!pheew!。但我仍然认为OP必须解决”
属性
问题”,也是。谢谢你的建议。我所做的是在Java 1.8上调试整个代码,但是我在前面提到的行中发现了问题。而不是替换函数我输入了你的代码,它出现了错误:方法替换(int,int,String)未为该类型定义StringBuilder@TotallyNotSuspisousAccount然后你必须找到另一个解决方案。参见xerx593答案
{foo=bar}
\u0000foo\u0000bar\u0000
 int Count = Integer.parseInt(p.getProperty("Number_of_properties"));
   for(int i = 1; i < Count; i++)
   {
    int x = Integer.parseInt(p.getProperty("x"+i));
    int y = Integer.parseInt(p.getProperty("y"+i));

   }
Number_of_properties = 4
x1 = 150
y1 = 70
x2 = 55
y2 = 77