替换字符串中固定数量的符号

时间:2018-11-21 16:12:49

标签: java

我有这个号码:getData(): Observable<any> { return this.http.get(this.postURL).pipe( map(data => data.map(d => (d.title = d.title +"Hey", d)); }), ); } 我只想保留前4位和后3位:

4200000000000000

其他所有内容均应替换为点。如何使用一些智能算法来实现这一点?

6 个答案:

答案 0 :(得分:1)

为什么不使用StringBuildersubstring方法:

public static String foo(long num) {
    String numToString = String.valueOf(num);
    return new StringBuilder()
              .append(numToString.substring(0 , 4))
              .append("....")
              .append(numToString.substring(numToString.length()-3, numToString.length()))
              .toString();
}

输入4200000000000000时,它输出:

4200....000

或者输入的内容已经是String

public static String foo(String str) {
    return new StringBuilder()
            .append(str.substring(0 , 4))
            .append("....")
            .append(str.substring(str.length()-3, str.length()))
            .toString();
}

答案 1 :(得分:0)

将您的电话号码解析为字符串,然后尝试以下操作:

var app = new Vue({
  el: '#app',
  data: {
    error: false,
    classArray: {
      btn: true,
      'btn-success': this.error
    }
  },
  methods: {
    toggle: function() {
      this.error = !this.error;
      console.log(document.getElementById('input1'));
    }
  }
});

答案 2 :(得分:0)

您可以使用类似的东西

int last = 3;
int first = 4;
String number = '4200000000000000';
String start = number.substring(0,first-1);
String end = number.substring(number.length()-last,number.length()-1);
String dots = '';

for(int i = 0; i<number.length()-last-first;i++){
  dots = dots + '.';
}

String result = start + dots + end;

答案 3 :(得分:0)

您可以将其转换为char数组,对其进行更改,然后将其转换回字符串

    char[] charArray = originalNumber.toCharArray();

    for (int i; i < charArray.length; i++) {
        if (i <= 4 || i >= charArray.length - 3) {
        charArray[i] = ".";
        }
    }
    String outputString = new String(charArray);

答案 4 :(得分:0)

这将用'。'替换从第4个字符到最后第4个字符的所有字符:

    String start = "4200000000000000";
    System.out.println(start);

    String target = start;
    if (start.length() > 7) {
        target = new StringBuilder()
                .append(start.substring(0, 4))
                .append(new String(new char[start.length() - 7]).replaceAll(".", "."))
                .append(start.substring(start.length() - 3))
                .toString();
    }
    System.out.println(target);

将打印

4200000000000000
4200.........000

答案 5 :(得分:0)

使用String类的子字符串方法:

String str = "4200000000000000";
String res = str.substring(0,4)+ str.substring(4,str.length()-3).replaceAll(".", ".") + str.substring(str.length()-3);

如果使用的是Apache commons库,则可以使用repeat方法创建指定长度的屏蔽字符串,并使用StringUtils类的overlay方法覆盖String的一部分:

String str = "4200000000000000";
String mask= StringUtils.repeat('.', str.length()-7);        
String res = StringUtils.overlay(str, mask, 4, str.length()-3);