2015-06-11 108 views
4

包围的第一号我有一个字符串,它看起来像删除由空间

2 3 5 5 5 

我需要删除第二个数字出这串的,什么是做到这一点的最简单的方法? 输出应为:

2 5 5 5 

更多的例子: 输入:

1 4 23 44 52 62 

输出:

1 23 44 52 62 

输入:

5 2 3 4 

输出:

5 3 4 

编辑: 我知道我可以调用.split(”“),并得到一个数组,然后加入休息,但我要寻找一个更好的解决方案,如正则表达式,可以避免循环

+0

我想过,但我会得到一个int数组,所以认为有可能做到这一点的简单方法 – HoKy22

+0

为什么它会是一个int数组?它是一个字符串,split为你提供了一个字符串数组,然后连接给你一个字符串。 – Loocid

+0

字符串,这就是我的意思 – HoKy22

回答

3

使用string.replaceFirst

string.replaceFirst("(?m)^(\\d+)\\s+\\d+", "$1"); 

OR

string.replaceFirst("\\s+\\d+", ""); 

DEMO

+2

这只是美丽的 – HoKy22

0

沿着这条线的东西会工作:

String str = "2 3 5 5 5"; 

int first = str.indexOf(" "); 
int second = str.indexOf(" ", first +1); 

if (second > -1) 
    return str.subString(0, first) + str.subString(second); 
+0

我没有对此进行测试,所以如果您没有在输出中输入正确的空间布局,则在获取子字符串时可能需要-1或+1。虽然核心思想应该是功能性的。 –

+1

不,我做了数学,间距应该没问题。 –

0

我不是太熟悉Java的字符串工具,但如果可能的话,你可以遍历字符串中的每个字符,并记录如果位置冷杉两个空格字符(x和y)。然后你可以接受一个从0开始并且x个字符长的子字符串,然后将它与从y开始并到字符串末尾的子字符串连接起来。

我现在正在使用我的手机,而Google键盘并不完全适合代码,所以很抱歉,我无法给您一个完整的实施方案。

+0

我试图避免任何种类的回路 – HoKy22

+0

为什么?一个简单的for循环不会给你带来麻烦,并且总是有其他答案使用的函数索引。 –

0

没有足够的上下文状态的最优雅的解决办法是什么,但是因为你不很想用split,另一个选项是用正则表达式:

Matcher m = java.util.regex.Pattern.compile("(\\d[ ]*)(\\d)[ ]*(.*)"). 
     matcher("5 2 3 4"); 
if (m.matches()) { 
    System.out.println(m.group(1) + m.group(3)); 
} 

输出在这种情况下将是:

5 3 4 

我觉得是什么样的使用正则表达式不错的是,你可以轻松地适应他们,如果设置略有不同。例如,如果不是所有数字,都会在开头处获得任意字符串或类似内容。

习惯正则表达式可能需要一点时间,但网上有大量文档,当然,您也可以在这里发布另一个问题:)。

希望它有帮助!

0

可能:

String s = "1 4 23 44 52 62".replaceFirst("(\\s[0-9]+\\s)", " "); 
+0

使用+比*更好。在这种情况下可能是相同的结果,但如果有2个空格在一起 – texasbruce

+0

噢耶!对不起,我会编辑它 –

0

这是C#语法,但你应该能够把它很容易地转换。

public string RemoveSecondNumber(string s) 
{ 
    string[] split = s.Split(' '); 
    List<string> output = split.ToList(); 

    output.RemoveAt(1); 

    return String.Join(" ", output); 
} 
0

则可以使用空间参数阵列然后移除第二数组索引然后用这样的空间把阵列部件的其余部分一起再次分裂

StringTokenizer st = new StringTokenizer("2 3 5 5 5", " "); 

打印阵列输出以查看结果

while (st.hasMoreElements()) { 
     System.out.println("StringTokenizer Output: " + st.nextElement()); 
    } 

以了解详情This Link

我希望你有我的观点

+0

重要提示:请记住,如果您的字符串有双倍空间或更多,例如“2 --- 3-5 ---- 5 ------ 5” “2-3-5-5-5”注意( - )意思是你需要在分割后循环你的数组,然后剔除任何空格或空的数组值,然后完成剩下的工作 –