我现在有点发脾气。
我有一个用户输入地址的文本框,然后作为网址的一部分发送。
目前,我用一个单词很好地解决了这个问题 - 比如说“布莱顿”。 但是,如果用户想要在查询中添加更多细节 - 例如街道地址,我会遇到问题。
32 Sydney Street,Brighton,City of Brighton and Hove BN1 4EP,UK
改变它的最佳方法是什么 - 我认为正则表达式会做到这一点,但我总是与它们斗争。
32 + + +布赖顿和+霍夫+ BN1 + 4EP + UK的悉尼+街+布赖顿+的+市+
我目前正在这样做 - 我觉得这很麻烦,而且好,只是编程不好。 如果我为'++'添加条件,那就更加严重了
String[] strArray = str.split(" ");
int strSize = strArray.length;
// Puts the split array back together, and add a plus between the words
str = "";
for (int i = 0; i < strSize; i++) {
if (i < (strSize - 1))
str += strArray[i] + "+";
else
str += strArray[i];
}
return str;
我正在考虑的所有方式都冒着连续使用两个++的风险(这会使网址无效),或者真的是“严重”的代码。
感谢您的时间
答案 0 :(得分:1)
Ollie,这应该这样做:
try {
String resultString = subjectString.replaceAll("(?i)[^a-z0-9]+", "+");
} catch (PatternSyntaxException ex) {
// Syntax error in the regular expression
} catch (IllegalArgumentException ex) {
// Syntax error in the replacement text (unescaped $ signs?)
} catch (IndexOutOfBoundsException ex) {
// Non-existent backreference used the replacement text
}