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