是否可以有一个字符串,例如:
var myText = "AB12CDE"
然后检查第3和第4个字母是否为数字,如果不是,则将其更改为数字。
因此,如果上述文本最终成为:
"ABIZCDE"
我可以将IZ更改为12,但不能替换I和Z的所有实例,只能替换第3和第4个切割器。
答案 0 :(得分:1)
就是这样:
let str = "ABCIZCDEZ"
var newString = ""
var index = 0
str.forEach { (char) in
var charToAppend = char
if index == 3 || index == 4 {
if char == "Z" {
charToAppend = "2"
}
if char == "I" {
charToAppend = "1"
}
}
newString.append(charToAppend)
index += 1
}
print(newString) // ABC12CDEZ
例如,对于插入,您可以进行扩展:
在课前的某处添加:
public extension String {
public func insert(string: String, index: Int) -> String {
return String(self.prefix(index)) + string + String(self.suffix(self.count - index))
}
}
然后:
let str2 = "ABC2CDEZ"
var newString = str2.insert(string: "I", index: 3)
print(newString) // ABCI2CDEZ
答案 1 :(得分:0)
您可以尝试这样的事情:
首先,从位置 2 开始到下一个 2 点找到字符串的子字符串,然后检查它是否为整数。如果没有则用整数替换它。
var myText = "ABIZCDE"
let myNSString = myText as NSString
let subString = myNSString.substring(with: NSRange(location: 2, length: 2))
print(subString)
let isInt = Int(subString) != nil
if !isInt {
myNSString.replacingCharacters(in: NSRange(location: 2, length: 2), with: "12")
}
print(myNSString)
希望它有所帮助!!
答案 2 :(得分:0)
可能有更简单的替代方案,但以下方法可行:
onclick
或没有正则表达式:
$(document).ready(function () {
$("#contactLink").on("click", function(){
jQuery('#contactBx').toggleClass('hideMe');
});
});
或将逻辑移到一起:
let myText = "ABIZCDEIZIZ"
let result = myText
// replace any I at 3rd or 4th position with 1
.replacingOccurrences(of: "(?<=^.{2,3})I", with: "1", options: .regularExpression)
// replace any Z at 3rd or 4th position with 2
.replacingOccurrences(of: "(?<=^.{2,3})Z", with: "2", options: .regularExpression)
print(result) // AB12CDEIZIZ
答案 3 :(得分:0)
所以我在操场上模拟了一些具有预期效果的东西,它还具有能够定义任意数量的替换规则的额外好处:
import Foundation
struct Substitution {
var origin: String
var result: String
var targetIndices: [Int]
}
let subs = [
Substitution(origin: "1", result: "I", targetIndices:[2, 3]),
Substitution(origin: "2", result: "Z", targetIndices:[2, 3])
]
let charset = CharacterSet(charactersIn: subs.map({ $0.origin }).joined(separator: ""))
let input = "AB12CDE"
func process(_ input: String) -> String {
var output = input
for (index, character) in input.enumerated() {
if let sub = subs.first(where: { $0.targetIndices.contains(index) && $0.origin == String(character) }) {
output = (output as NSString).replacingCharacters(in: NSMakeRange(index, 1), with: sub.result)
}
}
return output
}
let output = process(input)
答案 4 :(得分:0)
var str = "AB12CDE"
let index1 = str.index (str.startIndex, offsetBy: 2)
let index2 = str.index (str.startIndex, offsetBy: 3)
print(str[index1],str[index2])
if str[index1] == "1" && str[index2] == "2" {
let newString = str.prefix(2) + "IZ" + str.dropFirst(5)
print(newString)
}
你可以试试这个。
答案 5 :(得分:0)
这列举了您可能想要用字母替换的字符的详尽列表,您可以添加更多字符:
extension Character {
var alpabetNumber: Character? {
switch self {
case "I":
return "1"
case "Z":
return "2"
default:
return nil
}
}
}
完成工作的职能:
extension String {
mutating func namePlate() -> String {
var index = 0
self.forEach { (char) in
if index == 2 || index == 3 {
if let replacement = char.alpabetNumber {
self = replace(self, index, replacement)
}
}
index += 1
}
return self
}
}
// Helper
func replace(_ myString: String, _ index: Int, _ newChar: Character) -> String {
var modifiedString = String()
for (i, char) in myString.enumerated() {
modifiedString += String((i == index) ? newChar : char)
}
return modifiedString
}
用法:
var str = "ABIZCDE"
str.namePlate() // "AB12CDE"