没有循环或if语句的Java字符串搜索?

问题描述:

如果我有一个没有循环或if语句的Java字符串搜索?

String myName = "First Last"; 

我如何,没有if或任何其他的条件语句/循环,返回的名字只是缩写?

我一直在寻找这个!

感谢

+0

这是功课还是什么?我可以想到很多似乎没有使用条件的方法,但没有一个方法实际上没有使用它们。 –

+1

为什么没有条件或循环?你试过什么了?而Brendan Long是正确的,无论如何,当它运行时你最终会得到BNE或相当的代码。 – bdares

+0

不,我只是想获得最有效的方式来搜索字符串。我想也许有一种方法可以找到字符串中每个空格的位置或者什么...... – Matt

因为你不能在循环或使用条件,不能签任何东西,所以这是你唯一的选择:

/** 
* Gets the initials from a String. Note: Only works on the String "First Last" 
*/ 
String getInitials(String s) { 
    return "FL"; 
} 
+0

+1:在盒子外面思考。你找到了我想不到的答案。 – bdares

  1. 使用charAt(int)方法来获取一个字符。使用indexOf(String)方法

示例代码姓氏

  • 查找位置的下方。

    String initial_name = myName.charAt(0)+"."+myName.charAt(myName.indexOf(' ')+1)+"."; 
    
  • +0

    好的!我没有想到这一点,我觉得有点愚蠢! – andronikus

    没有一些形式的分支/循环/条件句的地方这是不可能的(在一个通用的方式处理),但谁说我们需要做的分支? (Regular expressions是强大的野兽 - 有时太厉害了,总是兽......)

    String name = "First Last"; 
    String initials = name.replaceAll("[^A-Z]", ""); 
    

    请注意,您的里程将有所不同:考虑Steve McQueen(或Президент Российской Федерации)作为反例。上面正则表达式的修改是一个可行的解决方案(即“留作练习”;-),但要注意正则表达式的警告。

    快乐编码。

    +1

    爱病理反例。像火一样,正则表达式只有在失去控制并完成所有事情时才是危险的。 – andronikus

    OK,这个怎么样:

    当然
    String myName = "First Last"; 
    String[] names = myName.split("\s+"); 
    return names[0] + names[1]; 
    

    请注意,这只是整整两个名字的作品被一些空格隔开。查找不同数量的首字母可能需要一个正则表达式或一些条件:D