用java写一个将13112345678转换为131****5678转换的函数
时间: 2023-12-04 22:39:22 浏览: 27
以下是Java代码实现将13112345678转换为131****5678的函数:
```java
public static String convertPhoneNumber(String phoneNumber) {
if (phoneNumber == null || phoneNumber.length() != 11) {
return phoneNumber;
}
return phoneNumber.substring(0, 3) + "****" + phoneNumber.substring(7);
}
```
该函数首先判断传入的手机号是否为空或长度是否为11,如果不是则直接返回原手机号。如果是,则将手机号的前三位和后四位分别取出,中间用“****”替换,最后返回新的手机号。
相关问题
java写一个线程安全的日期格式转换函数
可以使用 SimpleDateFormat 类来进行日期格式转换,但是默认情况下它不是线程安全的。为了确保线程安全,可以使用 ThreadLocal 来为每个线程创建一个独立的 SimpleDateFormat 实例。
以下是一个线程安全的日期格式转换函数的示例代码:
```java
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ThreadSafeDateFormat {
private static final ThreadLocal<DateFormat> dateFormatThreadLocal = new ThreadLocal<DateFormat>() {
@Override
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
public static Date parse(String dateString) throws ParseException {
return dateFormatThreadLocal.get().parse(dateString);
}
public static String format(Date date) {
return dateFormatThreadLocal.get().format(date);
}
}
```
在这个示例中,我们使用了 ThreadLocal 来为每个线程创建一个 SimpleDateFormat 实例。在 parse 和 format 方法中,我们通过 dateFormatThreadLocal.get() 来获取当前线程的 DateFormat 实例。这样就可以确保每个线程都使用自己的 DateFormat 实例,从而避免线程安全问题。
用Java写一个计算单位转换的工具类
好的,以下是一个使用Java编写的计算单位转换的工具类,支持多种计量单位之间的转换:
```java
import java.util.HashMap;
import java.util.Map;
public class UnitConverter {
private Map<String, Map<String, Double>> conversionTable;
public UnitConverter() {
conversionTable = new HashMap<>();
// 长度单位转换表(以米为基准)
Map<String, Double> lengthMap = new HashMap<>();
lengthMap.put("mm", 0.001);
lengthMap.put("cm", 0.01);
lengthMap.put("m", 1.0);
lengthMap.put("km", 1000.0);
conversionTable.put("length", lengthMap);
// 重量单位转换表(以克为基准)
Map<String, Double> weightMap = new HashMap<>();
weightMap.put("mg", 0.001);
weightMap.put("g", 1.0);
weightMap.put("kg", 1000.0);
conversionTable.put("weight", weightMap);
}
public double convert(double value, String fromUnit, String toUnit, String category) {
if (fromUnit.equals(toUnit)) {
return value;
}
if (!conversionTable.containsKey(category) || !conversionTable.get(category).containsKey(fromUnit)
|| !conversionTable.get(category).containsKey(toUnit)) {
throw new IllegalArgumentException("无法完成 " + fromUnit + " 到 " + toUnit + " 的转换");
}
double conversionFactor = conversionTable.get(category).get(toUnit) / conversionTable.get(category).get(fromUnit);
double result = value * conversionFactor;
return result;
}
}
```
在上面的代码中,我们首先创建了一个 `UnitConverter` 类,并在构造函数中初始化了转换表 `conversionTable`,其中包含了长度和重量两个类别的计量单位之间的转换因子。然后,我们定义了一个 `convert` 方法,该方法接受需要转换的数值、原单位、目标单位和计量单位类别作为参数,并返回转换后的结果。
在 `convert` 方法中,我们首先检查 `fromUnit` 和 `toUnit` 是否相同。如果相同,直接返回原数值。如果不同,我们检查 `category` 是否在 `conversionTable` 中,并且 `fromUnit` 和 `toUnit` 是否在 `category` 对应的转换表中。如果没有找到转换因子,则抛出 `IllegalArgumentException` 异常。
最后,我们将原始值乘以转换因子,并返回计算结果。这个工具类可以方便地用于不同计量单位之间的转换,如长度、重量等。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)