字符串 .replace() 不适用
String .replace() not applicable
我正在尝试从我的字符串中删除非数字字符。
我已经尝试使用 .replace()
方法,但是这个 returns 出现错误:
The method replace(char, char) in the type String is not applicable for the arguments (String, String)
代码:
Properties p = new Properties();
File f = new File("coords.txt");
if (f.exists()) {
FileInputStream in;
try {
in = new FileInputStream(f);
p.load(in);
in.close();
} catch (Exception e) {
System.err.println("Failed to load coordinates");
System.err.println(e.getMessage());
Button.waitForAnyPress();
System.exit(0);
}
} else {
System.out.println("No coordinates found");
while (!Button.ESCAPE.isPressed()) {
Thread.yield();
}
System.exit(0);
}
当我打印出字符串 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 (JavaDocs)
顺便说一句,我猜我绝不是 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("}", "");
错误信息:
The method replace(char, char) in the type String is not applicable for the arguments (String, String)
请尝试替换为Character.MIN_VALUE
:
将"
替换为'
,然后将所有''
(因为java "doesn't like the empty character literal")替换为Character.MIN_VALUE
:
gg = gg.replace('{', Character.MIN_VALUE);
gg = gg.replace('=', Character.MIN_VALUE);
gg = gg.replace('}', Character.MIN_VALUE);
Character.MIN_VALUE 是 不是 空字符,但 最接近它 :),并转换(使用 String.replcae(char,char)
测试):
{foo=bar}
至:
\u0000foo\u0000bar\u0000
...似乎难以复制和粘贴,但是 "looks like blanks" :)
因为我使用的字符串实际上是一个 属性 我不得不像 属性 一样检索它,它将自己格式化
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
我正在尝试从我的字符串中删除非数字字符。
我已经尝试使用 .replace()
方法,但是这个 returns 出现错误:
The method replace(char, char) in the type String is not applicable for the arguments (String, String)
代码:
Properties p = new Properties();
File f = new File("coords.txt");
if (f.exists()) {
FileInputStream in;
try {
in = new FileInputStream(f);
p.load(in);
in.close();
} catch (Exception e) {
System.err.println("Failed to load coordinates");
System.err.println(e.getMessage());
Button.waitForAnyPress();
System.exit(0);
}
} else {
System.out.println("No coordinates found");
while (!Button.ESCAPE.isPressed()) {
Thread.yield();
}
System.exit(0);
}
当我打印出字符串 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 (JavaDocs)
顺便说一句,我猜我绝不是 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("}", "");
错误信息:
The method replace(char, char) in the type String is not applicable for the arguments (String, String)
请尝试替换为Character.MIN_VALUE
:
将"
替换为'
,然后将所有''
(因为java "doesn't like the empty character literal")替换为Character.MIN_VALUE
:
gg = gg.replace('{', Character.MIN_VALUE);
gg = gg.replace('=', Character.MIN_VALUE);
gg = gg.replace('}', Character.MIN_VALUE);
Character.MIN_VALUE 是 不是 空字符,但 最接近它 :),并转换(使用 String.replcae(char,char)
测试):
{foo=bar}
至:
\u0000foo\u0000bar\u0000
...似乎难以复制和粘贴,但是 "looks like blanks" :)
因为我使用的字符串实际上是一个 属性 我不得不像 属性 一样检索它,它将自己格式化
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