别人传给我一句话,里面有数字,但是缺统一的单位,我要加上单位。
例如
输入:油价目前8.6,预计要涨0.4,最终9。
输出:油价目前8.6元/升,预计要涨0.4元/升,最终9元/升。
要写成这样的方法,最好用java写
/**
* @param text 缺单位的一句话
* @param unit 单位
* @return 加上单位的一句话
*/
public String addUnit(String text, String unit)
可以考虑用正则,匹配数字再替换
/**
* @param text 缺单位的一句话
* @param unit 单位
* @return 加上单位的一句话
*/
public String addUnit(String text, String unit) {
String pattern = "([1-9]\\d*\\.?\\d*)|(0\\.\\d*[1-9])";
// 创建 Pattern 对象
Pattern r = Pattern.compile(pattern);
// 创建 matcher 对象
Matcher m = r.matcher(text);
// 匹配到数据
while (m.find()) {
String value = m.group(0);
// 进行替换
text = text.replace(value, value + unit);
}
return text;
}
import java.util.ArrayList;
public class AddUnit {
public static void main(String[] args) {
String text = "油价目前8.6,预计要涨0.4,最终9";
String unit = "元/升";
String output = addUnit(text, unit);
System.out.println(output);
}
private static String addUnit(String text, String unit) {
if (text == null && unit == null) {
return "";
}
ArrayList<Integer> numberFlagList = new ArrayList<>();
for (int i = 0; i <text.length(); i++) {
if (Character.isDigit(text.charAt(i))) {
if (((i + 1) < text.length()) && (!Character.isDigit(text.charAt(i + 1)))
&& (text.charAt(i + 1) != '.')) {
numberFlagList.add(i);
} else if ((i + 1) >= text.length()) {
numberFlagList.add(i);
}
}
}
StringBuilder str = new StringBuilder(text);
int index = 0;
int unitSize = unit.length();
for (int number : numberFlagList) {
str.insert(number + index + 1, unit);
index += unitSize;
}
return str.toString();
}
}
这都不会你一头撞死好了
我看你账号已经注册过5年,这能不会?
原力等级3,遍历法会把?