对于一首无标点的词(见源代码),给出每行的结尾字串(见源代码)和标点数组(见源代码)并按行显示出来。具体步骤要求为:
(1) 把结尾字用split变为数组;
(2) 用indexOf依次找出每行的结尾,并用substring把整句取出,加上标点符号后放入一个ArrayList。
(3) 把该ArrayList的所有元素依次显示出来(System.out.println)。
* split,indexOf,substring均为字符串函数,请参考课件的字符串部分。
源码:
import java.util.*;
public class Poem{
public static void main(String args[]) throws Exception {
String ci="蝶恋花欧阳修庭院深深深几许杨柳堆烟帘幕无重数玉勒雕鞍游冶处楼高不见章台路雨横风狂三月暮门掩黄昏无计留春住泪眼问花花不语乱红飞过秋千去";
String ends= "花;修;几许;烟;数;处;路;暮;黄昏;住;语;去";
String punc[]={"", "", ",", ",", "。", ",","。",",",",","。",",","。"};
String[] end = ends.split(";"); //把结尾字用split变为数组;
int[] index = new int[end.length];
ArrayList <String> array = new ArrayList<String>();
String[] out = new String[end.length];
String temp;
for(int i = 0 ; i < end.length ; i++)
{
index[i] = ci.indexOf(end[i]); //用indexOf依次找出每行的结尾在ci对象中的下标
if(i == 0) out[i] = ci.substring(0,index[0]+1);
else out[i] = ci.substring(index[i - 1] + 1,index[i] + 1);
temp = out[i] + punc[i]; //用substring把整句取出,加上标点符号
array.add(temp); //放入一个ArrayList
}
//把该ArrayList的所有元素依次显示出来
Iterator<String> it = array.iterator(); // 顺序取出
while (it.hasNext())
{
System.out.println(it.next());
}
}
}
split:
String[] s6 = s1.
split
(
"e"
);
//用字符e
分割字符串s6,得到字符串数组s1
indexof:
int pos1 = s11.indexOf("e"); // 匹配子串的索引m.未找到返回-1.
int pos2 = s11.indexOf("e",3); // 匹配子串的索引:,从位置3开始
int pos3 = s11.lastIndexOf("e"); // 从尾部往前一个匹配子串的索引:
substring:
String s5 = s1.substring(0,4); //第0到3个字符的子串