我必须格式化数字,因为用户在Edit Text
中输入了数字。如果用户输入单个数字,则它应显示为0,0x
。如果用户输入两位数,则应显示0,xx
。如果是三位数,则为x,xx
。如果是四位数,则为xx,xx
。如果是五位数,则为xxx,xx
。如果是六位数,则为x.xxx,xx
。如果是七位数,那么xx.xxx,xx
。如果是八位数,那么xxx.xxx,xx
。有人可以帮我吗?提前谢谢。
答案 0 :(得分:0)
您可以使用addTextChangedListener
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// Write your logic here to parse the text
// and format it in the way you want to.
}
@Override
public void afterTextChanged(Editable s) {
}
});
答案 1 :(得分:0)
您可以尝试如下:
<td class="total_price table-default total" >${{$row->price}}
<span></span></td>
<td class="qty table-default">
<input type="number" class="quantity" value="{{$row->no_of_items}}" name="qty" maxlength="3" max="999" min="1" /> ×${{$row->p_price}}
答案 2 :(得分:0)
您可以通过将输入文件管理器设置为文本字段来实现此目的。
private InputFilter myFilter = new InputFilter(){
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
//your code to modify the input text.
return modified_input;
}
};
editText.setFilters(new inputFilterp[]{})
答案 3 :(得分:0)
这是一种可以实现的方法,即
addTextChangedListener
或类似的方式监控文字更改。当你得到字符串时,相对于0
迭代它直到它达到8
数字。
while (string.length() < 8) {
string = "0" + string;
}
带有String.format()
的所需格式的模式字符串。
String.format("%s.%s,%s", string); // pattern you want
所以这是完整的代码:
edit.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
text.setText("");
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
String string = s.toString();
if (string.length() < 8) {
while (string.length() < 8) {
string = "0" + string;
}
}
text.setText(String.format("%s.%s,%s", string.substring(0, 3), string
.substring(3, 6), string.substring(6, 8)));
}
});