如何不使用数组拆分字符串,提取URL_cars_xx中的语言代码?
提取字符串末尾的语言代码方法
嘿,这事儿好办!针对你这种URL_cars_xx固定格式的字符串,我给你几个简单直接的方法,轻松提取最后面的语言代码:
方法一:拆分数组取最后元素
这是最直观的方式,用下划线把字符串拆成数组后,直接取最后一项就行:String selectedItem = adapterView.getItemAtPosition(i).toString(); // 按下划线拆分字符串为数组 String[] parts = selectedItem.split("_"); // 数组最后一个元素就是目标语言代码 String langCode = parts[parts.length - 1];只要你的字符串格式固定是「前缀_前缀_语言码」,这个方法百分百管用,代码也容易理解。
方法二:通过索引截取字符串
如果你不想生成整个数组,可以直接定位最后一个下划线的位置,然后截取后面的内容:String selectedItem = adapterView.getItemAtPosition(i).toString(); // 找到最后一个下划线的位置 int lastUnderscorePos = selectedItem.lastIndexOf("_"); // 从下划线的下一位开始截取到末尾 String langCode = selectedItem.substring(lastUnderscorePos + 1);要是担心偶尔出现不符合格式的字符串(比如没有下划线),可以加个小判断避免报错:
String langCode = ""; int lastUnderscorePos = selectedItem.lastIndexOf("_"); if (lastUnderscorePos != -1) { langCode = selectedItem.substring(lastUnderscorePos + 1); }方法三:正则表达式匹配
如果你习惯用正则,也可以直接匹配最后一个下划线后的内容:String selectedItem = adapterView.getItemAtPosition(i).toString(); // 正则匹配末尾下划线后的字母/数字组合 Pattern pattern = Pattern.compile("_(\\w+)$"); Matcher matcher = pattern.matcher(selectedItem); String langCode = ""; if (matcher.find()) { langCode = matcher.group(1); }这个方法灵活性更高,要是以后格式有小变化,调整正则就行。
日常用的话,前两种方法足够简单高效,完全能满足你的需求~
内容的提问来源于stack exchange,提问作者Gastón Saillén
相关产品推荐
相关产品推荐

