例如,我有String:declare @xml xml
set @xml='<auditElement>
<RequestOrigination>
<IP>20.20.20.20</IP>
</RequestOrigination>
</auditElement>';
SELECT @xml.value('(/auditElement/RequestOrigination/IP/text())[1]','varchar(20)');
,并且我想应用算法,该算法将通过以下方式转换字符串:
61109010140000071219812874
关键是选择String的前三个字母,然后添加一个空格,然后在两个字符之后添加两个破折号,然后是三个,再是两个字符。就像是:
611 09-010-14-000-00-712-19-812-87-4
只有我希望我的算法是通用的。例如,对于字符串### ##-###-##-###-##-###-##-###
,输出为:6110901
,对于字符串611 09-01
,输出为:61109010
我尝试使用StringBuilder和addCharAt方法,但不幸的是它覆盖了我的字符串。
答案 0 :(得分:0)
上面的注释中的答案是有效的,但是如果您希望建立一个可以构建所需内容的常规循环,则可以解决问题:
public static void main(String args[]) {
String str = "61109010140000071219812874";
String output = "";
int segment = 2;
for(int i = 0; i < str.length(); i += segment){
segment = segment == 3 ? 2 : 3;
String seg = str.substring(i, Math.min(i + segment, str.length()));
char next = i == 0 ? ' ' : '-';
seg += next;
output += seg;
}
output = output.substring(0, output.length() - 1);
System.out.println(output); //611 09-010-14-000-00-712-19-812-87-4
}