在带有边空格的String列表中查找字符串

时间:2016-10-30 06:07:22

标签: java string spaces edge

我怎样才能达到这个条件?

 link: function (scope, element, attrs, ngModelCtrl) {

              // on change of modal 
               element.on("change", function (e) {
                    scope.$apply(function () {
                        ngModelCtrl.$setViewValue(element.val());
                    });
                });
            }

3 个答案:

答案 0 :(得分:3)

有两种方法:

  1. 在创建列表之前/之前删除空格(一次!)。这可能是最好的方法,除非你有良好的理由来保留空格。
  2. 使用显式循环进行搜索,在测试前使用trim()删除空格; e.g。

      for (String s : list) {
          if (s.trim().equals("banana")) {
               System.out.println("Yes it is listed");
               break;
          }
      }
    

    这种方法的问题在于,每次搜索列表时都会重复修剪工作。

  3.   

    我希望没有循环。有什么可以忽略边缘空间。

    好吧,您可以使用Java 8流实现这一点(再次阅读@javaguy的答案!),但成为一个循环,它很可能会更慢而不是使用显式循环。

答案 1 :(得分:2)

您需要使用String类的trim()方法修剪前导或尾随空格。

不使用Java8:

for(String fruit : list) {
      if(fruit.trim().equals(banana)) {
         System.out.println("Yes it is listed"); 
        }
}

使用Java8流(内部迭代):

    boolean containsBanana = list.stream().
                 anyMatch( (String fruit) ->fruit.trim().equals(banana) );
            if(containsBanana) {
                 System.out.println("Yes it is listed"); 
            }

请参阅下面的String API trim()以获取更多详细信息:

  

public String trim() - 返回一个字符串,其值为此字符串,带有   删除了任何前导和尾随空格。

https://docs.oracle.com/javase/8/docs/api/java/lang/String.html

答案 2 :(得分:1)

尝试trim(),它返回字符串的副本,省略前导和尾随空格。

public class NumberPyramid

{
    public static void main(String [] args)
    {
        for(int i=1; i<=9; i+=2)
        {
            for (int j = 11; j > i; j--)
            {
                System.out.print("-");
            }
            for(int j=1; j<=i; j++)
            {
                System.out.print(i);
            }
            for (int j = 1; j < i; j++)
            {
                System.out.print("-");
            }
            System.out.println();
        }
    }
}