1-CharacterIterator实现360°文本遍历-190326

0.CharacterIterator介绍


文本遍历应用范围很广,经常用到的有charAt()方法。

一个charAt()方法实例:Java charAt() 方法 | 菜鸟教程

看Demo,了解到另外一个文本遍历的迭代器:CharacterIterator (Java Platform SE 8 )

下面稍加整理一下谷歌翻译的官网介绍:

1.CharacterIterator接口定义了文本双向迭代的协议。迭代器迭代有界字符序列,字符是以GetBeginIndex()返回的值开始,并通过GetEndIndex()-1返回的值继续进行索引。

2.  CharacterIterator接口提供方法previous()next()用于迭代。如果它们将在GetBeginIndex()getEndIndex()-1的范围之外移动,则返回done,表示迭代器已到达序列的末尾。


1.CharacterIterator遍历


CharacterIterator支持正序、逆序、任意位置文本遍历。


正序

public void traverseForward(CharacterIterator iter) {

      for(char c = iter.first(); c != CharacterIterator.DONE; c = iter.next()) {

      processChar(c); }

}

逆序

public void traverseBackward(CharacterIterator iter) {

      for(char c = iter.last(); c != CharacterIterator.DONE; c = iter.previous()) {

        processChar(c); }

}

任意位置文本遍历

public void traverseOut(CharacterIterator iter, int pos) { 

           for (char c = iter.setIndex(pos);

                 c != CharacterIterator.DONE && notBoundary(c); 

                 c = iter.next()) { }  

           int end = iter.getIndex(); 

           for (char c = iter.setIndex(pos); 

                 c != CharacterIterator.DONE && notBoundary(c); 

                c = iter.previous()) { } 

           int start = iter.getIndex(); 

  processSection(start, end); }         


2.CharacterIterator实例

逆序遍历


import java.text.CharacterIterator;

import java.text.StringCharacterIterator;

public class CharacterIteratorDemo{

    public static void main(String[] args){

          CharacterIterator it=new StringCharacterIterator("20190326FirSt");

          for(char c=it.last();c!=CharacterIterator.DONE;c=it.previous()){

          System.out.println(c);}

   }

}

正序遍历


import java.text.CharacterIterator;

import java.text.StringCharacterIterator;

public class CharacterIteratorDemo{

    public static void main(String[] args){

       CharacterIterator it=new StringCharacterIterator("20190326FirSt");

       for(char c=it.first();c!=CharacterIterator.DONE;c=it.next()){

       System.out.println(c);}

   }

}


你可能感兴趣的:(1-CharacterIterator实现360°文本遍历-190326)