我有以下问题:
输入字符串1:“A [空格] B [空格] C [空格] [空格] D [空格] [空格] E”
输入字符串2:“1-”或“1,2”或“3 - ”
如果输入字符串2是1-,那么我应该从第一个字
返回字符串如果输入字符串是3-那么我应该从第3个字返回字符串,
如果输入字符串是1,2,那么我应该返回单词1和2
我们不能假设多个空格是分隔符
例如
3-应返回C [SPACE] [SPACE] D [SPACE] [SPACE] E
请将[SPACE]视为实际空格字符
答案 0 :(得分:1)
使用仅匹配单个空格(例如"[^ ] [^ ]"
之类的)的正则表达式来查找应将字符串拆分为数组或某种列表的位置。然后返回数组的相关部分。
答案 1 :(得分:1)
你没说什么语言...... Java! 它是hacky,并假设输入有效,但可能是一个很好的起点
public void foo(String input, String q) {
//First clean up the input string so that all tokens are delimited by one space
input = input.replaceAll(" *", " ");
String[] inputTokens = input.split(",");
String[] queries = q.split(",");
for (String query : queries) {
if (query.endsWith(-)) {
query = query.replace("-", "");
for (int i = Integer.parseInt(query), i <= inputTokens.length; i++) {
System.out.println(inputTokens[i]);
}
} else {
System.out.println(inputTokens[Integer.parseInt(query)]);
}
}
答案 2 :(得分:0)
这是在Python中实现它的方法
import re
def f(s1,s2):
items = re.findall("[^ ]+| +",s1)
result = []
for idx in s2.split(','):
i,j,_ = idx.partition("-")
i=int(i)-1
result.append(''.join(items[i:None if j else i+1]))
return ','.join(result)
assert f("A B C D E", "3-") == "C D E"
assert f("A B C D E", "1,2") == "A,B"
assert f("A B C D E", "4-,1,2") == "D E,A,B"