我有一个字母,有三个字母,1,2,X。有时字符串可以是12,或1X,或2X ..等。
我想根据输入字母的位置添加“ - ”。 例如,如果我得到1,结果应该是1--,如果我得到X,结果应该是-X,如果我得到2X,结果应该是-2X。
我的方法是使用2 ^ n选择的状态机,但我正在寻找一个聪明的apporach和更好的apporach。
更多例子
Input 1 2 X 2X
Ouput 1-- -2- --X -2X
答案 0 :(得分:6)
您可以使用String.contains()
检查输入字符串是否包含字符:
String in = "12X";
String out;
out = in.contains("1") ? "1" : "-";
out += in.contains("2") ? "2" : "-";
out += in.contains("X") ? "X" : "-";
这将产生您想要的结果:
(in) (out)
1 1--
12 12-
1X 1-X
X21 12X
X --X
正如评论中所指出的,这将更有效:
String in = "12X";
String out;
out = ( in.contains("1") ? "1" : "-" )
+ ( in.contains("2") ? "2" : "-" )
+ ( in.contains("X") ? "X" : "-" );
答案 1 :(得分:3)
这是一种方法。它的优点是代码的大小相对于支持的符号数是恒定的。
final String x = "12X";
final char[] out = new char[x.length()];
Arrays.fill(out, '-');
for (int i = 0; i < input.length(); i++) {
final char c = input.charAt(i);
out[x.indexOf(c)] = c;
}
System.out.println(new String(out));
答案 2 :(得分:1)
public static String getStringWithDashes(String input)
{
final char result[] = "---";
if (input.contains("1"))
{
result[0] == '1';
}
if (input.contains("2"))
{
result[1] == '2';
}
if (input.contains("X"))
{
result[2] == 'X';
}
return new String(result);
}