I made an Android application where the users ask questions, but they may use programming codes in their questions. How can I separate the programming codes from the normal texts in Kotlin? If you can explain, I want to change the background of the codes. Like this enter image description here
CodePudding user response:
just use something just like stackoverflow i.e. put code between "```" and you can easily parse it from string.
More info: to parse string you can use Regex
here's some sample code that detects "```" and changes inner text to red:
...
onCreate(){
textView.setText(formatString("alo ```alo```"));
}
...
SpannableStringBuilder formatString(String message) {
Pattern p = Pattern.compile("(```)(.*?)(```)");// detects the pattern ```*``` in the string
Matcher matcher = p.matcher(message);
SpannableStringBuilder spannable = new SpannableStringBuilder(message);
//for changing color of text
while (matcher.find()) {
ForegroundColorSpan span = new ForegroundColorSpan(Color.RED);
spannable.setSpan(span, matcher.start(), matcher.end(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
spannable.replace(spannable.getSpanStart(span), spannable.getSpanStart(span) 3, "");
spannable.replace(spannable.getSpanEnd(span) - 3, spannable.getSpanEnd(span), ""); //to remove ``` from string
}
return spannable;
}