Android Studios breakiterator,仅使用 space 来中断文本
Android Studios breakiterator, to break text using only space
My code to break the word up
选择单词进行更改等等
以此为例"make-their-vocal"上面的代码将其分解为"make-"
我不希望我想要整个 "make-their-vocal" 所以当进行更改时我仍然可以记住以后在内存中所做的更改并进行比较。
所以基本上有什么方法可以使用中断迭代器或代码来中断 space 吗?
代码也在这里
TextView definitionView = (TextView) findViewById(R.id.et_MainText);
definitionView.setMovementMethod(LinkMovementMethod.getInstance());
definitionView.setText(definition, TextView.BufferType.SPANNABLE);
Spannable spans = (Spannable) definitionView.getText();
BreakIterator iterator = BreakIterator.getLineInstance(Locale.UK); // change this if you want word or what ever
iterator.setText(definition);
int start = iterator.first();
for (int end = iterator.next(); end != BreakIterator.DONE; start = end, end = iterator
.next()) {
String possibleWord = definition.substring(start, end);
if (Character.isLetterOrDigit(possibleWord.charAt(0)) ||checkPun(possibleWord.charAt(0)) ||checkSpace(possibleWord.charAt(0))) {
ClickableSpan clickSpan = getClickableSpan(possibleWord);
spans.setSpan(clickSpan, start, end,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//Log.d("ClickableSpan", "init: " + start +" "+ end);
}
}
我知道它不好,但它有效
列表listForStart;
列表 listForEnd;
TextView definitionView = (TextView) findViewById(R.id.et_MainText);
definitionView.setMovementMethod(LinkMovementMethod.getInstance());
definitionView.setText(definition, TextView.BufferType.SPANNABLE);
Spannable spans = (Spannable) definitionView.getText();
String T = definitionView.getText().toString();
listForStart = new ArrayList<String>();
listForEnd = new ArrayList<String>();
int testStart = 0;
for(int i = 0; i<T.length();i++){ //getting the list completed
if(T.charAt(i)==' '){ //found a space //go backwards unti
listForStart.add(Integer.toString(testStart));
listForEnd.add(Integer.toString(i));
//Log.d("TEST", "init: "+testStart+" "+i);
if(i+1 <T.length()){
testStart = i+1;
}else{break;}
}
}
for(int i = 0;i != listForStart.size();i++){
int start = Integer.valueOf(listForStart.get(i));
int end = Integer.valueOf(listForEnd.get(i));
String possibleWord = definition.substring(start,end);
if (Character.isLetterOrDigit(possibleWord.charAt(0)) ||checkPun(possibleWord.charAt(0)) ||checkSpace(possibleWord.charAt(0))) {
ClickableSpan clickSpan = getClickableSpan(possibleWord);
spans.setSpan(clickSpan, start, end,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//Log.d("ClickableSpan", "init: " + start +" "+ end);
}
}
}
My code to break the word up
选择单词进行更改等等
以此为例"make-their-vocal"上面的代码将其分解为"make-"
我不希望我想要整个 "make-their-vocal" 所以当进行更改时我仍然可以记住以后在内存中所做的更改并进行比较。
所以基本上有什么方法可以使用中断迭代器或代码来中断 space 吗?
代码也在这里
TextView definitionView = (TextView) findViewById(R.id.et_MainText);
definitionView.setMovementMethod(LinkMovementMethod.getInstance());
definitionView.setText(definition, TextView.BufferType.SPANNABLE);
Spannable spans = (Spannable) definitionView.getText();
BreakIterator iterator = BreakIterator.getLineInstance(Locale.UK); // change this if you want word or what ever
iterator.setText(definition);
int start = iterator.first();
for (int end = iterator.next(); end != BreakIterator.DONE; start = end, end = iterator
.next()) {
String possibleWord = definition.substring(start, end);
if (Character.isLetterOrDigit(possibleWord.charAt(0)) ||checkPun(possibleWord.charAt(0)) ||checkSpace(possibleWord.charAt(0))) {
ClickableSpan clickSpan = getClickableSpan(possibleWord);
spans.setSpan(clickSpan, start, end,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//Log.d("ClickableSpan", "init: " + start +" "+ end);
}
}
我知道它不好,但它有效
列表listForStart; 列表 listForEnd;
TextView definitionView = (TextView) findViewById(R.id.et_MainText);
definitionView.setMovementMethod(LinkMovementMethod.getInstance());
definitionView.setText(definition, TextView.BufferType.SPANNABLE);
Spannable spans = (Spannable) definitionView.getText();
String T = definitionView.getText().toString();
listForStart = new ArrayList<String>();
listForEnd = new ArrayList<String>();
int testStart = 0;
for(int i = 0; i<T.length();i++){ //getting the list completed
if(T.charAt(i)==' '){ //found a space //go backwards unti
listForStart.add(Integer.toString(testStart));
listForEnd.add(Integer.toString(i));
//Log.d("TEST", "init: "+testStart+" "+i);
if(i+1 <T.length()){
testStart = i+1;
}else{break;}
}
}
for(int i = 0;i != listForStart.size();i++){
int start = Integer.valueOf(listForStart.get(i));
int end = Integer.valueOf(listForEnd.get(i));
String possibleWord = definition.substring(start,end);
if (Character.isLetterOrDigit(possibleWord.charAt(0)) ||checkPun(possibleWord.charAt(0)) ||checkSpace(possibleWord.charAt(0))) {
ClickableSpan clickSpan = getClickableSpan(possibleWord);
spans.setSpan(clickSpan, start, end,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//Log.d("ClickableSpan", "init: " + start +" "+ end);
}
}
}