【问题标题】:Android Studios breakiterator, to break text using only spaceAndroid Studios breakiterator,仅使用空格来中断文本
【发布时间】:2019-05-03 23:51:58
【问题描述】:

My code to break the word up

选择单词以更改它们等等

以“make-their-vocal”为例,上面的代码将其分解为“make-”

我不希望我想要整个“make-their-vocal”,所以当进行更改时,我仍然可以稍后记住内存中所做的更改并进行比较。

所以基本上有什么方法可以使用中断迭代器或代码最多只按空格中断?

这里也有代码

TextView 定义View = (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);
        }

    }

【问题讨论】:

  • 请不要发布您的代码图像或图像链接,因为图像不可搜索,一旦图像目标被删除,您就很难理解您的问题,请参阅meta.stackoverflow.com/questions/374700/… 了解更多信息.

标签: java android iterator break


【解决方案1】:

我知道它不好,但它有效

列表 listForStart; 列出 listForEnd;

TextView 定义View = (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);
        }

    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多