var userVersionHTML = "2448hello2448welcome2448";
Regex regex = new Regex("2448(.*?)2448");
var v = regex.Match(userVersionHTML);
versionNumberStatus.Text = v.Groups[1].ToString();
usernameStatus.Text = v.Groups[2].ToString();
目标是让versionNumberStatus.Text
显示“你好”。并usernameStatus.Text
显示欢迎'。
问题是usernameStatus.Text
没有显示任何内容。有什么想法吗?
答案 0 :(得分:2)
此处只有一个抓取组,"2448(.*?)2448"
模式,因此您无法访问.Groups[2]
。
解决方案是使用2448
拆分或使用2448(.*?)2448(.*?)2448
模式。
请参阅regex demo。
var userVersionHTML = "2448hello2448welcome2448";
var chunks = userVersionHTML.Split(new[] {"2448"}, StringSplitOptions.RemoveEmptyEntries);
var versionNumberStatus = chunks[0];
var usernameStatus = chunks[1];
答案 1 :(得分:0)
解决方案是使用public class AutoCompleteSearchViewAdapter extends ArrayAdapter<String> implements Filterable {
private ArrayList<HashMap<String, String>> fullList = new ArrayList<>();
private ArrayList<HashMap<String, String>> filteredList = new ArrayList<>();
public AutoCompleteSearchViewAdapter(Context context, int resource, ArrayList<HashMap<String, String>> fullList) {
super(context, resource);
this.fullList = fullList;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return super.getView(position, convertView, parent);
}
@Override
public Filter getFilter() {
android.widget.Filter filter = new android.widget.Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if (constraint != null) {
ArrayList<HashMap<String, String>> suggestion = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < fullList.size(); i++) {
if (fullList.get(i).get("productName").toUpperCase().startsWith(((String) constraint).toUpperCase())) {
suggestion.add(fullList.get(i));
}
}
filterResults.values = suggestion;
filterResults.count = suggestion.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filteredList.clear();
if (results.values != null) {
ArrayList<HashMap<String, String>> newValues = (ArrayList<HashMap<String, String>>) results.values;
for (int i = 0; i < newValues.size(); i++) {
filteredList.add(newValues.get(i));
}
}
if (results != null && results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}
};
return filter;
}
@Override
public int getCount() {
return filteredList.size();
}
@Override
public String getItem(int position) {
return filteredList.get(position).get("productName");
}
}
这样的正则表达式:
Matches()